web-dev-qa-db-ja.com

DMARCを有効にするために転送するときにのみSRSを有効にする

VPSにメールサーバーを設定しています。スパムを防ぎ、スパムとしてマークされるのを防ぐために、SPF、DKIM、DMARCを有効にしました。ただし、自分のメールボックスをホストしたくないので、受信メールを外部のメールアカウントに転送します。 Gmail。転送の問題は、SPFチェックが壊れることです。これは、メールサーバーのアドレスと一致するように送信者のアドレスを書き換えるSRSを使用して修正できます。

メールを送信するときに、メールサーバーを介してメールを送信するようにGmailを設定しました。その場合、SPF、DKIM、DMARCは合格しますが、SRSが無効になっている場合に限り、そうでない場合、SRSにより送信アドレスドメインがFROMヘッダードメインと一致しなくなります。これはDMARCが合格するための要件です。

だから私の質問は、転送時にSRSを有効にし、送信時に有効にしないようにするにはどうすればよいですか?

ここにもう少しコンテキストがあります。メールサーバーはUbuntu12.04 LTSを実行しており、次のソフトウェアを使用しています。

  • 接尾辞2.9.6
  • OpenDKIM 2.6.8
  • OpenDMARC 1.3.1
  • PostSRSD(GitHubの最新マスター)

私が理解したように、PTR、MX、EHLO、およびメールバナーを必要とするメールクライアントがあります 同じドメインを参照するため 。また、VPSをメールサーバー以外にも使用しているため、これらをVPSのホスト名(vps.tldなど)に設定することを選択しました。

PostSRSDを有効にするには、/etc/postfix/main.cfに次の行を追加する必要があります。

sender_canonical_maps = tcp:127.0.0.1:10001
sender_canonical_classes = envelope_sender
recipient_canonical_maps = tcp:127.0.0.1:10002
recipient_canonical_classes = envelope_recipient, header_recipient

ただし、転送時だけでなく、一般的なケースではSRSが有効になります。これはメールサーバーの一般的な使用例のようですので、これに対する解決策があることを願っています。

編集:

要求に応じたpostconf -nの出力は次のとおりです。

alias_maps = hash:/etc/postfix/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
milter_default_action = accept
mydestination = vps.tld, localhost
mydomain = vps.tld
myhostname = vps.tld
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
non_smtpd_milters = $smtpd_milters
recipient_canonical_classes = envelope_recipient, header_recipient
recipient_canonical_maps = tcp:127.0.0.1:10002
recipient_delimiter = +
sender_canonical_classes = envelope_sender
sender_canonical_maps = tcp:127.0.0.1:10001
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_loglevel = 1
smtp_tls_security_level = may
smtpd_milters = inet:127.0.0.1:8891, inet:127.0.0.1:8893
virtual_alias_domains = domain1.tld domain2.tld domain3.tld
virtual_alias_maps = hash:/etc/postfix/virtual
3
Matthijs Steen

私の問題の解決策は、SRS_EXCLUDE_DOMAINS PostSRSDの設定には、メールの送信元のすべてのドメインが含まれています。この質問を投稿する前でも、以前にこれを試しましたが、この設定を定義した後、PostSRSDは起動しなくなったので、別の解決策があることを望みました。どうやらPostSRSDにはこの設定に関するバグがあるようです。その上のコメントは、ドメインをスペースを使用して区切ることができることを明確に示しているためです。複数のドメインをスペースまたはコンマで区切ります。ただし、そうすると起動に失敗します。スペースをコンマに置き換えると、これが修正されます。

私は他の解決策に非常に興味があるので、この質問は未解決のままにしておきます。

5
Matthijs Steen

SRS_EXCLUDE_DOMAINSの代わりに(またはそれに加えて)、次のようにすると、ドメインを動的に除外できます。

sender_canonical_maps = mysql:/etc/postfix/no-srs.cf,tcp:127.0.0.1:10001
recipient_canonical_maps = mysql:/etc/postfix/no-srs.cf, tcp:127.0.0.1:10002

詳細と例をここに記載した、この非常に役立つ情報を見つけました: https://github.com/roehling/postsrsd/issues/42#issuecomment-149690471

1
Ralph Schmidt