Мы планируем реализовать Переменный обратный путь конверта (VERP) для улучшенной обработки отказов для нашего приложения.
Наша текущая почтовая инфраструктура - MS Exchange 2007, но находится в процессе обновления до 2010. Мы также внедряем Postini для фильтрации спама.
Exchange не поддерживает подадресация (см. также это вопрос об одноразовых адресах) - а VERP - это своего рода специализированное приложение субадресации.
Существуют ли какие-либо варианты реализации VERP в Exchange без установки другого ретранслятора SMTP, отличного от Exchange, перед Exchange для предварительной обработки входящих сообщений? В частности, можно ли создать правило транспорта, которое могло бы соответствовать целевому (несуществующему) получателю, хранить этот адрес получателя в специальном заголовке, добавленном к сообщению, и перенаправлять сообщение в заранее созданный почтовый ящик?
Примечание: у нас есть ресурсы для разработчиков, если можно каким-то образом использовать собственный код.
Обмен - отстой. Почтовое программное обеспечение Linux бесплатное. Установите его в ящик, настройте поддомен для всей рассылаемой вами почты для конкретного приложения. (Как myapp.mycompany.tld, поэтому вся ваша почта приходит с someuser@myapp.mycompany.tld)
Было бы довольно легко написать (или попросить кого-нибудь написать) быстрое и грязное приложение, которое будет получать и обрабатывать сообщения о недоставке и уведомлять ваше приложение, используя что-то вроде SOAP.
Если вы работаете в среде только с окнами, то неинтересно отказываться от работы с единственным сервером Linux, но я не знаю, как сделать это с помощью Exchange.
Другой вариант - встроить уникальную строку символов в заголовок, тему или тело каждого сообщения. Используйте X-MyApp-Id: blah. Конечно, это может сработать больше спам-фильтров ...
Конечно, из коробки в Exchange 2007/2010 нет поддержки VERP. Как вы знаете. Я не верю, что вы сможете создать правило транспорта даже с помощью PowerShell, чтобы делать то, что вы хотите. Я считаю, что самое лучшее, что вы получите, - это создание собственного транспортного агента. Вы можете найти Exchange SDK на msdn.microsoft.com. Если ваша цель - определить, для кого сообщение было возвращено, вам может быть лучше проанализировать журналы протокола. Ведение журнала протокола должно быть включено и вести отдельные журналы отправки / получения. Удачи, Пол
Мы делаем это, анализируя журналы отслеживания сообщений и имея правило, которое удаляет сообщения о недоставке перед их отправкой. ЭТО работает, если ваше отправляющее приложение может создать обратный путь VERP. Это не SMTP-часть обмена, которая не может выполнять VERP, это часть почтового ящика, которая не может обрабатывать подстановочные знаки для помещения сообщений о недоставке в почтовый ящик. Если вы используете журналы, вам не нужно отправлять сообщение о недоставке, которое сокращает ваш почтовый трафик. Журналы представляют собой файлы csv, поэтому они загружаются в базу данных довольно аккуратно, а затем вы анализируете поле пути возврата для своего идентификатора записи VERP и используете код причины, чтобы пометить как жесткий или мягкий возврат. Проблема в том, что это отлично работает, если ваше приложение использует smtp для подключения к серверу exchangeange. По какой-то причине, если вы используете команду pickup directory exchange, вместо вашего обратного пути верпа используется адрес отправителя, и вы теряете возможность сделать это. Все еще пытаюсь понять это.