Установите заголовки электронной почты так, чтобы отскакивающие электронные письма переходили по определенному адресу
Из нашего приложения rails мы отправляем некоторые системные электронные письма с адресом "from", установленным на [email protected] Если эти отказы будут отправлены обратно на этот адрес нашим почтовым сервером. Однако то, что я хотел бы сделать, это не возвращать электронные письма, отправленные обратно на сайт [email protected], но на другой адрес, например, [email protected]
Есть ли заголовок или что-то, что я могу установить в письме, которое достигнет этого, без меня придется идти и исследовать капризы нашего почтового сервера? Мы отправляем письма с использованием exim в случае, если это релевантно.
cheers, max
Ответы
Ответ 1
Я просто понял это в exim4 после многого чтения о конфигурации exim.
Сначала вы хотите, чтобы ваше приложение добавило следующий заголовок:
Return-Path: <[email protected]>
Работает с скобками или без них. Exim добавит скобки в конце в любом случае.
Во-вторых, это была трудная часть. Exim всегда хотел переопределить мой адрес Return-Path: с пользователем unix, который его отправил. Вы можете использовать /etc/email -addresses в Ubuntu для установки статического электронного письма для пользователя вашего веб-приложения, но это все еще игнорирует заголовок Return-Path. Вот как я изменил конфигурацию exim, чтобы уважать Return-Path из веб-приложения:
В основной области конфигурации добавьте:
return_path_remove = false
В соответствующей конфигурации маршрутизатора (например, dnslookup):
dnslookup:
# ...
errors_to = ${if def:h_return-path: {${address:$h_return-path:}} fail}
headers_remove = return-path
no_more
Теперь exim должен скопировать адрес заголовка Return-Path на уровне конверта и удалить исходный заголовок Return-Path.
Я пробовал множество других конфигурационных директив, и это единственный способ, который действительно работал у меня.
Ответ 2
Ошибки-To устарели, поэтому почтовые серверы, как правило, игнорируют этот заголовок - большинство серверов будут отскакивать до отправителя конверта.
Это адрес электронной почты, который ваш почтовый клиент отправляет как часть подключение к SMTP-серверу (не обязательно адрес "От" - хотя он как правило, то же самое).
Я не знаю, все это хорошо, но я нашел this - хотя, насколько я могу судить, Return-Path является reset по MTAs, чтобы соответствовать информации MAIL FROM от клиента, поэтому, похоже, вы не можете ее установить.
Я думаю, что единственное, что вы можете сделать, это установить адрес отказов на вашем сервере.
Ответ 3
Вот решение:
В заголовке электронной почты вы можете установить:
From: "From Name" <[email protected]>
Reply-To: [email protected]
Errors-To: <[email protected]>
Return-Path: <[email protected]>
Ответ 4
3 года слишком поздно, но на всякий случай кто-то еще приходит сюда. Return-Path
является правильным заголовком, но, как указал Джеймс Гаррисс выше, он должен быть размещен там на сайте, выполняющем окончательную доставку. Вы не можете просто вставить его в себя.
Если вы пишете электронные письма, напрямую подключаясь к SMTP-серверу, это легко - команда MAIL
содержит обратный путь. Если вы отправляете
MAIL FROM:<[email protected]>
на SMTP-сервер, тогда отскоки будут возвращены на [email protected]
.
Если вы не создаете SMTP, и вы используете MTA (то есть exim/etc), вам нужно найти ключ командной строки для вашего MTA. Для sendmail -f [email protected]
"устанавливает адрес отправителя", и это заканчивается как Return-Path
в окончательной доставке почты, а [email protected]
получит отскоки (я делаю именно это для автогенерированных писем). Я не пробовал это на exim, но он имеет точно такой же вариант, и он должен работать.
Ответ 5
Заголовок Return-Path
записывается сервером , а не сервером-отправителем. И согласно RFC 5321, это то же самое, что и адрес, указанный в команде MAIL FROM
.
Даже если вы сами устанавливаете заголовок Return-Path
, принимающий сервер перезапишет это.
Теперь, здесь вещь, адрес в команде MAIL FROM
и адрес в заголовке From
могут быть разными. Получающий пользователь не видит адрес MAIL FROM
. Они видят только адрес заголовка From
.
Итак, если вы хотите игнорировать отскоки или хотите, чтобы они переходили на определенный адрес, вы должны использовать этот адрес в команде MAIL FROM
.
Но в заголовке From
вы можете просто использовать [email protected]
- пользователь увидит этот адрес.
Чтобы упростить еще немного, вы отправляете электронное письмо с адреса [email protected]
. Получающий сервер отправит отскоки на этот адрес.
Чтобы показать вашему пользователю адрес [email protected]
вместо адреса handle_bounce...
, установите заголовок From
в сообщении MIME необработанного сообщения на адрес noreply...
.
Недавно я получил бесплатное письмо от Bitbucket. Здесь необработанное сообщение:
Return-Path: <[email protected]r.atlassian.com>
From: "Atlassian Bitbucket" <[email protected]>
To: <[email protected]>
Subject: Continuous delivery, without the headache.
Date: Wed, 28 Feb 2018 12:40:53 -0600
MIME-Version: 1.0
Reply-To: "Atlassian Bitbucket" <[email protected]mailer.atlassian.com>
... message body ...
Как вы можете видеть, Return-Path
- это адрес, предназначенный для обработки отскоков. Но адрес From
- это почта [email protected]
. Это означает, что это письмо действительно отправлено этим обратным адресом обработки, а не адресом noreply.
Вы также можете увидеть заголовок Reply-To
, который предназначен для обработки ответов, если пользователь отвечает на письма без ответа. Эти ответы, вероятно, сразу же отброшены.