Позвольте поделиться проблемой и заодно испросить совета.
Ситуация
На сервере уже не первый год исправно работает связка Exim 4.84+Dovecot.
Для тех у кого почтооборот поменьше был настроен Roundcube.
Остальные, примерно 80%, сидели на The Bat!
Была поставлена задача заменить The Bat! каким-нибудь бесплатным почтовым клиентом.
За пару месяцев я установил, потестил и отверг около 50-ти почтовых клиентов (и платных и бесплатных).
Наконец остановился на одном, удовлетворявшим условиям поставленной задачи - Foxmail. Начал постепенно переводить народ на него и тут бац! Оказалось FoxMail в отличии от The Bat! не умеет запрашивать уведомления о доставке. А у нас на Горячей Линии эти подтверждения используются как доказательства отработки заявки. Однако сливать FoxMail на поиск и интеграцию которого уже ушло столько времени я не хотел и потому решил попробовать делать DSN запросы на уровне Exim.
Понимая что запрос формирует сам MUA я начил сравнивать служебные заголовки писем отправленных с обоих почтовых клиентов. Отличие было только в наличии у The Bat! заголовка "Return-Receipt-To:". Я попробовал добавлять такой заголовок ко всем письмам через секцию роутеров. Заголовок добавлялся, но уведомления о доставке писем отправленных с FoxMail так и не появлялись.
Более того - сообщение о доставке для писем отправленных с The Bat! приходят даже тогда когда я стал (чисто для эксперимента) удалять заголовки "Return-Receipt-To:" из всех писем на уровне роутеров. Стало быть этот заголовок не важен. Но других различий в служебных заголовках этих двух программ нет!
Тогда я запустил exim в режиме дебагинга и сравнил выводы команд при отправке.
Получается примерно следующая схема
MUA стучится к exim и здоровается, exim сверяется с настройками основной секции здоровается в ответ, объявляет какие команды доступны, MUA говорит от кого письмо, exim начинает гонять его по ACL проверкам и говорит ОК, и вот как раз тут как раз отличие:
у The Bat!
Код: Выделить всё
16:24:30 47279 SMTP>> 250 OK
16:24:30 47279 SMTP<< RCPT TO:<everyour@yandex.ru> NOTIFY=SUCCESS,FAILURE
16:24:30 47279 DSN: Setting notify success
16:24:30 47279 DSN: Setting notify failure
16:24:30 47279 DSN Flags: c
А у FoxMail
Код: Выделить всё
17:26:01 67731 SMTP>> 250 OK
17:26:01 67731 SMTP<< RCPT TO: <EverYour@yandex.ru>
И только потом идет секция роутеров где происходят манипуляции с заголовком Return-Receipt-To: - по сути уже бесполезные...
Следовательно править что либо там смысла нет.
Попробовал запихнуть заголовок в проверки идущие перед объявлением получателя и запроса нотификации
Код: Выделить всё
warn !authenticated = *
hosts = +relay_from_hosts
add_header = Return-Receipt-To: $sender_address
Вопрос
Есть ли у кого-нибудь идеи как еще можно сгенерировать исходящие DSN запросы?