Страница 1 из 1

exim для чайника: поиск в dbm-файле

Добавлено: 2009-07-07 9:11:42
moury
Пытаюсь освоить exim, испытываю страшные трудности в понимании логики работы его acl и поиска.

Есть файл dbm, сделанный из текстового файла следующего формата:

Код: Выделить всё

<address>: <host>
Где <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
Я же говорил, что писал на коленке, не проверял, а просто наброски сделал и дал, тому кому нужно -- дальше и сам сможет... :good: :drinks: