Как настроить Exim4, чтобы направлять всю почту домена в PHP скрипт?
Есть свежий Debian с Exim 4, и направленным на его ip доменом, куда будут приходить отписки от рассылки, по заголовкам List-Unsubscribe. Нет никакого опыта настройки Exim и любого другого MTA.
Адреса для отписки указываются уникальные по шаблону hash12345@unsubscribe.domain.com
Как принимать их всех, и направлять в скрипт?
Два дня возни навели меня на понятия router'ов, transport'ов и pipe.
Создал router: catch_all:
debug_print = "R: catch_all for $local_part@$domain"
driver = accept
domains = unsubscribe.domain.com
transport = unsubscribe_pipe
Проверил подвисшее письмо из очереди: exim -d -M
Похоже, что оно даже не добирается до моего роутера и ещё раньше становится «для внешней отправки». Проходит hubbed_hosts router, dnslookup_relay_to_domains router и dnslookup router — на этом всё. До моего catch_all похоже, не добирается.
Не вступили в силу обновлённые конфиги? Сервис перезапускал. Как проверить действующий конфиг? Исправлял/добавлял среди сотен файлов в /etc/exim4/conf.d/, потом sudo service exim4 restart
Как оказалось, дело в том, что мои изменения в конфиг файлах Exim не использовались. Я поверхностно полагал, что, раз внёс правки в /etc/exim4/conf.d/..., то они тут же задействуются.
Оказалось, я пропустил важный этап компиляции конфигов с помощью утилиты update-exim4.conf предварительно указаав dc_use_split_config='true' в /etc/exim4/update-exim4.conf.conf, чтобы брались конфиг-файлы из дерева директорий под /etc/exim4/conf.d/
Пальцем в небо — у пользователя под которым работает exim должны быть права выполнять unsubscribe.php, и писать в лог файл. Лог файл указывайте с полным путем, для теста пихайте его куда нубудь в /tmp/test.log.
На постоянную работу вместо прямой записи в лог лучше используйте системный syslog.
Спасибо за ответ. Дело, оказалось, в том, что я не пересобирал конфиг exim'а, и все мои гениальные нововведения просто пылились в стороне. Заработало в том же виде, как описал в приведённых конфигах.
procmail для этого более заточен, мне кажется. И задача перенаправить письмо в файл или через пайп в программу обычно расписывается на первой же странице большинства гайдов-туториалов по прокмейлу. Так что пользуйте любой MTA, Exim или любой другой, его задача только принять письма и все ансабскрайбы свалить определенному пользователю, а затем прокмейл (local delivery agent) уже по своему простенькому конфигу решит, что надо в почтовые ящики класть, а что скрипту отдать, который уже отпишет отправителя.