LINUX.ORG.RU
решено ФорумAdmin

Помогите с конфигом для эксима

 , ,


1

2

Помогите написать конфиг/фильтр/что-то еще:
Есть несколько сайтов, работающих под nginx+php-fpm, у каждого сайта свой php процесс, запущенный от своего пользователя, в php.ini включено mail.add_x_header, необходимо что бы exim отправлял почту(dc_eximconfig_configtype='internet') только если в базе найдена запись с uid пользователя(из x-header) и почтой отправителя(from), в остальных случаях не отправлять ничего.

Довольно чёткое ТЗ того, что нужно сделать, у вас есть, теперь вам нужно сюда: http://www.exim.org/exim-html-current/doc/html/spec_html/ch-access_control_li...

Вам нужно выбрать место сеанса взаимодействия с Exim, куда вставить разрешающую/обрубающую ACL (в зависимости от того, какую вы общую политику выберете - запрет всего или наоборот - разрешать всё, выборочно запрещать). Насколько я понял, ваши PHP зовут exim напрямую, как /usr/sbin/sendmail - потому вам надо что-то вроде acl_not_smtp. Ну и дальше вам понадобятся lookup-ы в базу и правильно настроенные ACL.

P.S. Если такую портянку на английском тяжело читать, на http://lissyara.su есть русский перевод этой справки.

undertaker ★★
()
Ответ на: комментарий от undertaker

Благодарствую за направление в ACL.
В итоге сделал так:

acl_ZLO:
  accept
    condition = ${if def:header_X-PHP-Originating-Script:{1}{0}}
    condition = ${lookup mysql{SELECT 1 FROM `mail` WHERE `uid`='${extract{1}{:}{$header_X-PHP-Originating-Script:}}' AND `mail`='${sender_address}'}{1}{0}}
  accept
    condition = ${if def:header_X-PHP-Originating-Script:{0}{1}}
  deny
    message = Sender address rejected
Ну еще системный фильтр на удаление хидера, т.к. exim отказался понимать remove_header в ACL, но это уже мелочи.

zlofenix
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.