URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 91834
[ Назад ]

Исходное сообщение
"exim ACL"

Отправлено wishguest , 26-Июн-11 17:51 
Доброго времени суток !

Проблема в следующем при отправке почты exim-ом
почтовая сессия рвется на этапе прохождения ACL

Все рубится правилом


accept  hosts         = +relay_from_hosts
        deny hosts         =!+relay_from_hosts
             message     =  domain isn't relayed


В начале конфига указан hostlist relay_from_hosts


hostlist relay_from_hosts =${lookup pgsql{SELECT hosts FROM relayfromhosts}}


в который выгребаются данные из pgsql

В базе данных таблица relayfromhosts выглядит так:


exim=> select * from relayfromhosts;
     hosts      
----------------
localhost
192.168.0.0/16
(2 rows)

exim=>


Содержание

Сообщения в этом обсуждении
"exim ACL"
Отправлено DeadLoco , 26-Июн-11 19:21 
В случае, когда письмо отдается МТА локально, не происходит удаленного коннекта и переменная remote_hostname оказывается пустой. Соответственно, не проходится проверка на присутствие в списке релеимых хостов. Чтобы разрешить вброс писем в МТА с локалхоста, нужно в список разрешенных хостов добавить пустой хост. Это делается так:

        accept hosts = : +relay_from_hosts

Двоеточие разделяет списки хостов, первый список, от равенства до двоеточия, как раз пуст. Второй - это ваш, извлекаемый из БД.
Кстати, у вас два правила, а не одно. Первое - разрешающее пустой и БД-список, а второе - запрещающее все остальное с сообщением:

        deny message = domain isn't relayed


"exim ACL"
Отправлено wishguest , 26-Июн-11 19:23 
>[оверквотинг удален]
> МТА с локалхоста, нужно в список разрешенных хостов добавить пустой хост.
> Это делается так:
>         accept hosts = :
> +relay_from_hosts
> Двоеточие разделяет списки хостов, первый список, от равенства до двоеточия, как раз
> пуст. Второй - это ваш, извлекаемый из БД.
> Кстати, у вас два правила, а не одно. Первое - разрешающее пустой
> и БД-список, а второе - запрещающее все остальное с сообщением:
>         deny message = domain
> isn't relayed

Проблема была в том , что

>>> host in "192.168.0.0/16
>>> localhost
>>> 10.10.10.5/32"? no (end of list)
>>> host in "!+relay_from_hosts"? yes (end of list)
>>> deny: condition test succeeded

550 domain isn't relayed
LOG: H=(kgfk) [192.168.10.34] F=<hper@net> rejected RCPT hgj@net: domain isn't relayed
LOG: SMTP command timeout on connection from (kgfk) [192.168.10.34]

таблица relayfromhosts создана сo столбцом hosts , который имеет тип данных text
поменял тип данных на cidr, проблема отпала



"exim ACL"
Отправлено DeadLoco , 26-Июн-11 19:32 
> поменял тип данных на cidr, проблема отпала

Я конфиги храню в мускле, поля текстовые, все ок. Вероятно, специфика постгреса.