Привет. Пользуюсь MTA exim4 и библиотекой-клиетом jwsmtp в Debian Lenny. После создания и отправки письма, exim может ответить 250 OK <HASH>. Но письмо иногда реально НЕ уходит. В логах можно посмотреть, что сообщение freezed или ещё что-то, из-за несуществующего обратного адреса или ещё что. По-мойму это жутко не удобно: я получаю 250 в ответ, но письмо не уходит. Как я могу программно проверить (через общение с MTA, localhost:25, естественно), что письмо РЕАЛЬНО ушло? Может, возможно как-то использовать ту строку <HASH>, которую exim возвращает вместе с кодом 250? Спасибо.
Во время SMTP сессии MTA отвечает 250 OK <HASH>, если письмо прошло его собственные стандрты и он положил его в очередь. Однако при отсылке письма из очереди могут возникнуть совсем другие проблемы, узнать о которых можно только из логов, но не как не из SMTP запросов. Читайте внимательно сообщение об ошибке в логе и исправляйте вашу конфигурацию.
>Во время SMTP сессии MTA отвечает 250 OK <HASH>, если письмо прошло его собственные стандрты и он положил его в очередь. Однако при отсылке письма из очереди могут возникнуть совсем другие проблемы, узнать о которых можно только из логов, но не как не из SMTP запросов. Читайте внимательно сообщение об ошибке в логе и исправляйте вашу конфигурацию.т.е. если логгирование отключено, то я вообще никак не узнаю, ушло ли письмо?? Разве это правильно? Странно получается, согласитесь - я прошу программу оправить письмо, она отвечает 250 OK, и всё, далее её действия совершенно закрыты, и отправила ли она письмо невозможно узнать... бред какой-то честно говоря.
Ну напишите свой rfc, который бы описывал ваше видение работы MTA. Потом почитайте к нему комментарии, возможно узнаете о себе что-то новое. Можете даже попробовать ваш rfc реализовать в виде своего MTA, предложите его другим, узнайте о себе еще больше.
>Ну напишите свой rfc, который бы описывал ваше видение работы MTA. Потом
>почитайте к нему комментарии, возможно узнаете о себе что-то новое. Можете
>даже попробовать ваш rfc реализовать в виде своего MTA, предложите его
>другим, узнайте о себе еще больше.похоже что для отсылки писем придётся писать свой MTA. Ладно, всё равно спасибо за помощь :)
Процесс передачи почты носит многоуровневый характер, и задача проверки "что письмо реально ушло" в общем случае толком не решается.В типовом случае письмо проходит (с некоторыми вариантами) следующие этапы:
1. приём локальным MTA, помещение в локальную очередь
2. пересылка на smarthost, имеющий доступ в Internet, помещение в очередь на smarthost
3. передача на один из MX-серверов, ответственных за обработку почты домена, помещение в очередь MX-сервера
4. передача с MX-сервера на подчинённый сервер, обеспечивающий доступ для пользователей почты, помещение в почтовый ящик пользователя
5. приём почты клиентским программным обеспечениемНа любой из стадий письмо может быть отброшена как спам, заблокировано или задержано. Локальный MTA имеет при этом информацию только о шагах 1 и 2, причём SMTP-клиент "видит" только результат шага 1.
Строго говоря, на указанный в сообщении обратный адрес при возникновении проблем обязательно отправляется отчёт об ошибке доставки. Можно попробовать обработать такие отчёты.
Алгоритм доставки почты оптимизирован для ситуации, когда поток почты порождается живыми людьми, а проблемы с доставкой решаются не менее живыми людьми - сисадминами.
Что касается конкретно описанной проблемы (несуществующий обратный адрес), то она решается установкой правильного обратного адреса.
>Строго говоря, на указанный в сообщении обратный адрес при возникновении проблем обязательно
>отправляется отчёт об ошибке доставки. Можно попробовать обработать такие отчёты.Строго говоря, это зависит от настроек DSN. Такой отчёт может и не приходить.
>Что касается конкретно описанной проблемы (несуществующий обратный адрес), то она решается установкой
>правильного обратного адреса.Это просто одна из возможных проблем. Мне нужно программно проверить реально ли ушло письмо. С помощью SMTP либо ESMTP (ETRN поможет ли?)
>Строго говоря, это зависит от настроек DSN. Такой отчёт может и не
>приходить.В Интернете встречается много неправильно настроенных серверов.
И с этим действительно нужно жить :)>Это просто одна из возможных проблем. Мне нужно программно проверить реально ли
>ушло письмо. С помощью SMTP либо ESMTP (ETRN поможет ли?)Сперва имеет смысл сформулировать, что же такое "реально ушло"?
Добралось на smarthost? Поступило на ответственный MX? Или дошло
до локального ящика адресата?
>Сперва имеет смысл сформулировать, что же такое "реально ушло"?
>Добралось на smarthost? Поступило на ответственный MX? Или дошло
>до локального ящика адресата?Прошло ли письмо успешно все стадии, которые мы в состоянии определить программно на своей машине, откуда посылаем письмо. Если мы НИКАК не можем определить, что письмо дошло
до локального ящика адресата, но можем определить что письмо 100% пришло на ответственный MX, то считаем это успешной посылкой. Хотя бы так.
>Прошло ли письмо успешно все стадии, которые мы в состоянии определить программно
>на своей машине, откуда посылаем письмо. Если мы НИКАК не можем
>определить, что письмо дошло
>до локального ящика адресата, но можем определить что письмо 100% пришло на
>ответственный MX, то считаем это успешной посылкой. Хотя бы так.Тогда путей два:
(1) взаимодействовать напрямую с ответственным MX-сервером
(2) анализировать протоколы локального SMTP-сервера на предмет изменения состояния доставки сообщений
Для второго варианта при работе с exim достаточно смотреть в mainlog.
>[оверквотинг удален]
>>ответственный MX, то считаем это успешной посылкой. Хотя бы так.
>
>Тогда путей два:
>
> (1) взаимодействовать напрямую с ответственным MX-сервером
>
> (2) анализировать протоколы локального SMTP-сервера на предмет изменения состояния доставки сообщений
>
>
>Для второго варианта при работе с exim достаточно смотреть в mainlog.Поможет ли ETRN из ESMTP?
>Поможет ли ETRN из ESMTP?Насколько я понимаю - нет.
>Привет. Пользуюсь MTA exim4 и библиотекой-клиетом jwsmtp в Debian Lenny. После создания и отправки письма, exim может ответить 250 OK <HASH>. Но письмо иногда реально НЕ уходит.Если это так важно, надо использовать MQ вместо email. Там и проверки, и гарантии доставки ))