LAMPスタックを実行している本番サーバーがいくつかあります。それぞれに、システムとPHPからのメールをキャッチし、スマートホスト( SendGrid SMTPサービス)を介して中継するローカルPostfixサーバーがあります。
スマートホストに送信されるすべての送信メッセージにカスタムヘッダーを追加したいと思います。これにより、SendGridでサーバーごとの統計をフィルタリングできます。何かのようなもの:
X-SMTPAPI: {"category": "www1"}
Postfixのドキュメントでは、Postfixの「アクセス」テーブルでPREPENDアクションを使用することに言及しています。そこで、/etc/postfix/access
に次の行を追加しました。
PREPEND X-SMTPAPI: {"category": "www1"}
access
ファイルをポストマップでハッシュしました。
しかし、地図の使い方がわかりません。次のようなものは機能しません:
smtp_client_restrictions = check_client_access hash:/etc/postfix/access
Postfixにこのヘッダーを付加させるにはどうすればよいですか?
これはあなたの正確な質問に答えます: https://web.archive.org/web/20150706131729/http://hoursofop.tumblr.com/post/1776027465
ここで報告されたクイックステップ:
ファイル/ etc/postfix/sendgrid_headersを作成し、次の行を追加します。
/^From:/ PREPEND X-SMTPAPI: {“category” : “Category Name”}
次の行でmaster.cfファイルを更新します。
smtp unix - - n - - smtp -o smtp_header_checks=regexp:/etc/postfix/sendgrid_header
それはUbuntuシステムに適用され、私にとっては完璧に機能しました。 master.cfで正しい「smtp」行を選択するように注意してください。タブを使用して-o
行をインデントしました。
また、SendGridは、送信される前にメールからX-SMTPAPI
ヘッダーを削除することに注意してください。そのため、そこにはありませんが、SendGridダッシュボード内にカテゴリが表示されます。
スペルが間違っているようです header_checks
as smtp_client_restrictions
、これは 正しいスペル 間違ったパラメータでもありません。 ☺
この種のことは、 sendmail
の周りの単純なシム、PHP(または任意の)スクリプトが使用するように構成されている 、シムスクリプトは、cat
コマンドとecho
コマンドを使用する簡単な演習です。MTSは、これを行うには実際には間違った場所です。
Sparkpostでも同様の問題が発生しました。配信オプションを設定するために、カスタムヘッダーを追加する必要がありました。
この問題(すべての電子メールにカスタムヘッダーを追加する)には、さまざまな解決策があります。
私の解決策は、Postfix header_checksを使用し、カスタムヘッダーを「From」ヘッダーの前に追加することです。
/ etc/postfix/my_custom_headerという名前の新しいファイルを作成します。
/^From:/i X-MSYS-API: { "options" : {"transactional": true} }
/etc/postfix/main.cfを編集します(下部に追加):
# Add custom Sparkpost X-MSYS-API header to all mails
header_checks = regexp:/etc/postfix/my_custom_header
postfix設定をリロードします(このコマンドはDebian Wheezy用であり、OSによって異なる場合があります)
service postfix reload
EDIT:残念ながら、このメソッドはヘッダーをall電子メール(受信および送信)に追加します。 outboundメールにのみヘッダーを追加するメソッドをまだ探しています。