web-dev-qa-db-ja.com

返送メールが特定のアドレスに送信されるようにメールヘッダーを設定する

Railsアプリから、noreply @ ourdomain.comに設定された 'from'アドレスを持つシステム生成メールを送信します。これらがバウンスした場合、メールサーバーによってこのアドレスに返送されます。ただし、バウンスされた電子メールを[email protected]に返送せず、bounced @ ourdomain.comなどの別のアドレスに返送したいのです。

メールサーバーの気まぐれを調査する必要なく、これを達成するヘッダーまたは何かをメールに設定できますか?関連する場合には、eximを使用してメールを送信します。

乾杯、最大

35
Max Williams

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ヘッダーを削除する必要があります。

私は他の多くの設定ディレクティブを試しましたが、これは実際に私のために働いた唯一の方法です。

9
ColinM

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で試したことはありませんが、まったく同じオプションがあり、動作するはずです。

5
EML

Errors-Toは廃止されているため、メールサーバーは通常このヘッダーを無視します。ほとんどのサーバーは「エンベロープ送信者」にバウンスします。

これは、メールクライアントが SMTPへの接続 サーバーの一部として送信する電子メールアドレスです(送信元アドレスとは限りません-通常は同じです)。

Railsそれだけではありませんが、私は this -を見つけましたが、Return-PathがMTAによってリセットされ、MAILクライアントからの情報なので、実際には設定できないようです。

できるのは、サーバーにバウンスアドレスを設定することだけだと思います。

4
HorusKol

解決策は次のとおりです。

電子メールヘッダーでは、次を設定できます。

From: "From Name" <[email protected]>
Reply-To: [email protected]

Errors-To: <[email protected]>
Return-Path: <[email protected]>
3
Dmitriy Naumov

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ヘッダーも表示できます。これらの返信はおそらくすぐに破棄されます。

3
xyres