Страница 1 из 1
exim для чайника: поиск в dbm-файле
Добавлено: 2009-07-07 9:11:42
moury
Пытаюсь освоить exim, испытываю страшные трудности в понимании логики работы его acl и поиска.
Есть файл dbm, сделанный из текстового файла следующего формата:
Где <host> - либо ip-адрес, либо бекрезолв хоста.
Пожалуйста, напишите условие, чтобы почта с обратным адресом <address> принималась, если ее передает хост <host>
Я перепробовал больше десятка вариантов описания условий, с какого-то момента подставляя в condition все встретившиеся в google варианты, хоть как-то напоминающие решение моей задачи, поэтому не привожу их здесь специально.
Заранее спасибо.
Re: exim для чайника: поиск в dbm-файле
Добавлено: 2009-07-07 14:21:40
Laa
Обратный адрес e-mail? или IP?
Re: exim для чайника: поиск в dbm-файле
Добавлено: 2009-07-07 14:27:11
moury
Обратный адрес e-mail ($sender_address).
Re: exim для чайника: поиск в dbm-файле
Добавлено: 2009-07-07 16:11:44
Laa
file.dbm:
Код: Выделить всё
email1@domain: 12.3.4.5
email2@domain2: 13.4.5.6
exim.conf:
Код: Выделить всё
...
addresslist acl1_file = dbm;/usr/local/etc/exim/acl1_file.dbm
...
acl_check_mail:
...
accept condition = ${if or \
{${lookup{$sender_address} dbm{acl1_file}{$sender_host_address}}}\
{${lookup{$sender_address} dbm{acl1_file}{$sender_host_name}}}\
}
log_message = Permit by local policy -- dbm acl.
Это очень бегло на коленке и я не проверял... попробуйте сперва простой кондишен, а потом когда получится вместе с OR.
Re: exim для чайника: поиск в dbm-файле
Добавлено: 2009-07-09 13:20:33
moury
Laa, большое спасибо. Ваш ответ очень помог. К сожалению, Ваш код при дословном воспроизведении не заработал.
Надеюсь, что другим начинающим админам экзима помогут заработавшие конструкции:
Код: Выделить всё
ACL1FILE= /etc/exim4/test_check_access.cf.db
...
accept
condition = ${if eq \
{$sender_host_address} \
{${lookup{$sender_address}dbm{ACL1FILE}{$sender_host_address}}} \
{yes}{no} \
}
log_message = Accepted by local policy - dbm acl1file
и
Код: Выделить всё
ACL1FILE= /etc/exim4/test_check_access.cf.db
...
accept
hosts = ${lookup{$sender_address}dbm{ACL1FILE}{$sender_host_address}}
log_message = Accepted by local policy acl1file
При этом, у меня в лог-файл содержимое log_message почему-то не пишется и строка
Код: Выделить всё
addresslist acl1_file = dbm;/usr/local/etc/exim/acl1_file.dbm
также игнорируется.
Re: exim для чайника: поиск в dbm-файле
Добавлено: 2009-07-09 14:24:59
Laa
Я же говорил, что писал на коленке, не проверял, а просто наброски сделал и дал, тому кому нужно -- дальше и сам сможет...
