Что-то последний
месяц выдался нелегким, в плане свободного
времени. И работы много, дедлайны всякие,
и в Строгино съездить покататься на
Шайтан-доске
(какой-никакой
в
Строгино ветер, а летать иногда даже
у меня получается). То шоппинг на полдня,
то к родне за город надо ехать. Не одно,
так другое, короче. Времени на блог
совсем не было.
Вот, выдался
свободный часик, расскажу про настройку
почтовика SMTP exim4.
Задача была
поставлена так: на девелоперском сервере
идет отладка документооборота. Там
всякие уведомления по почте отсылаются
и, в целях понимания, что, собственно
говоря, тут происходит, надо эти
уведомления копировать в один почтовый
ящик. Для мониторинга и изучения.
Проще говоря,
всю исходящую почту копировать на
определенный ящик.
В интернетах
такая задача известна как catchall router. Ибо
в exim4 движение почты регулируется
роутерами.
Сразу надо
уточнить две очень важные детали. Они
влияют на всё.
1 – конфиг
построен разбитым на файлы (Debian 7
«wheezy»), что видно внутри
/etc/exim4/update-exim4.conf.conf
как
dc_use_split_config='true'
2 – почтовик
настроен на отправку всего на smarthost, что
видно (там же) как
dc_eximconfig_configtype='smarthost'
Первый пункт
влияет на то, где надо тюкнуть. В каком
месте файловой системы.
И второй,
собственно, тоже про это.
В интернетах
полно инструкций по наладке catchall роутера
для exim, но для указанной конфигурации
они не подходят от слова «совсем».
Короче, что
надо сделать.
В папке
/etc/exim4/conf.d/router/
создать файлик
/etc/exim4/conf.d/router/170_vasnake-catchall_outgoing
Почему? А
потому, что:
1 – сплит_конфиг;
2 – в файле
/etc/exim4/conf.d/router/200_exim4-config_primary
лежит роутер
для смартхоста, завершающий обработку
цепочки роутеров. Наш кастомный роутер
должен быть до него.
В файлике
/etc/exim4/conf.d/router/170_vasnake-catchall_outgoing
написать что-то
вроде
catch_all_outgoing:
driver = redirect
data = mydebug@trash.com
unseen
После чего
останется только сделать ребилд конфигов,
перезапустить сервис и отладить лажу:
update-exim4.conf
service exim4 restart
# Print a listing of the messages in the queue
exim -bp
# Print what Exim is doing right now
exiwhat
# Searching the queue with exiqgrep
# Use -z to match only frozen messages
# Use -i to print just the message-id
exiqgrep -z -i
# Remove a message from the queue
exiqgrep -z -i | xargs exim -Mrm
# Test how exim will route a given address
exim -bt vasnake@gmail.com
echo "This is the message body" | mutt -a "/root/installed-software.log" -s "subject of message" -- vasnake@gmail.com
tail -n 300 -f /var/log/exim4/mainlog
В процессе
решения задачи были использованы
следующие материалы:
Как-нибудь в
другой раз расскажу, как наладить
smarthost на отправку почты через Яндекс.Почта
для домена.
original post http://vasnake.blogspot.com/2015/09/exim4-catchall-router.html