Railsアプリから、noreply @ ourdomain.comに設定された 'from'アドレスを持つシステム生成メールを送信します。これらがバウンスした場合、メールサーバーによってこのアドレスに返送されます。ただし、バウンスされた電子メールを[email protected]に返送せず、bounced @ ourdomain.comなどの別のアドレスに返送したいのです。
メールサーバーの気まぐれを調査する必要なく、これを達成するヘッダーまたは何かをメールに設定できますか?関連する場合には、eximを使用してメールを送信します。
乾杯、最大
lot exim設定について読んだ後、exim4でこれを自分で理解しました。
まず、アプリに次のヘッダーを追加する必要があります。
Return-Path: <[email protected]>
ブラケットの有無にかかわらず動作します。 Eximはどちらの場合でも最後に括弧を追加します。
第二に、これは難しい部分でした。 Eximは常に、Return-Path:アドレスを、それを送信したUNIXユーザーでオーバーライドしたいと考えていました。 Ubuntuで/ etc/email-addressesを使用して、Webアプリのユーザーに静的な電子メールを設定できますが、これでもReturn-Pathヘッダーは無視されます。以下は、WebアプリからのReturn-Pathを尊重するようにexim構成を変更した方法です。
メインの設定エリアで以下を追加します:
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ヘッダーを削除する必要があります。
私は他の多くの設定ディレクティブを試しましたが、これは実際に私のために働いた唯一の方法です。
3年は遅すぎますが、万が一他の人がこの方法で来た場合に備えて。 Return-Path
は正しいヘッダーですが、James Garrissが上で指摘したように、最終配信を実行するサイトによってそこに置かれなければなりません。あなたはそれを自分自身に固執することはできません。
SMTPサーバーに直接接続してメールを作成している場合、これは簡単です。MAIL
コマンドには戻りパスが含まれています。あなたが送る場合
MAIL FROM:<[email protected]>
sMTPサーバーに送信すると、バウンスは[email protected]
。
SMTPを構築しておらず、MTA(exim/etcなど)を実行している場合は、MTAのコマンドラインスイッチを見つける必要があります。 sendmailの場合、-f [email protected]
「送信者のアドレスを設定」、これはReturn-Path
最終配信メール、および[email protected]
はバウンスを取得します(自動生成された電子メールの場合はこれを正確に行います)。私はこれをeximで試したことはありませんが、まったく同じオプションがあり、動作するはずです。
解決策は次のとおりです。
電子メールヘッダーでは、次を設定できます。
From: "From Name" <[email protected]>
Reply-To: [email protected]
Errors-To: <[email protected]>
Return-Path: <[email protected]>
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...
アドレスを表示するには、未加工の電子メールMIMEメッセージのFrom
ヘッダーをnoreply...
アドレスに設定します。
最近、Bitbucketからno-replyメールを受け取りました。生のメッセージは次のとおりです。
Return-Path: <bounce-1231860_HTML-1209402755-103116181-132689-225@bounce.mailer.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" <reply-fe3915707665057b741c71-1231860_HTML-1209402755-132689-225@mailer.atlassian.com>
... message body ...
ご覧のとおり、Return-Path
はバウンスの処理専用のアドレスです。ただし、From
アドレスはnoreply@...
メールです。つまり、この電子メールは実際にはnoreplyアドレスではなく、このバウンス処理アドレスによって送信されたということです。
ユーザーが返信なしのメールに返信した場合、返信の処理専用のReply-To
ヘッダーも表示できます。これらの返信はおそらくすぐに破棄されます。