web-dev-qa-db-ja.com

Postfixで送信者アドレスを「[email protected]」に強制するにはどうすればよいですか?

SMTP AUTH(ポート587のSTARTTLS)を使用してPostfixサーバーをセットアップしました。すべてのユーザーは「example.org」というドメインに属しています。送信者アドレスを「[email protected]」に強制したい。

これはmain.cfオプションで達成できることを学びました

smtpd_sender_restrictions = reject_sender_login_mismatch, ...
smtpd_sender_login_maps = hash:/etc/postfix/smtpd_sender_login_maps

次のようなlogin_mapsファイルを使用します。

[email protected] a
[email protected] b
[email protected] c
...

SMPT AUTHによる送信者アドレスのなりすましのブロック も参照)しかし、これは、新しいユーザーが増えるたびにlogin_mapsファイルを編集する必要があることを意味します。このような柔軟なマッピングは必要ありません。常に "[email protected]"である必要があります。より簡単なオプションはありますか?

15
Chris Lercher

最初に、コマンドpostconf -mを入力してpcreが含まれている行を探し、Postfixのインストールがpcreをサポートしているかどうかを確認します。 pcreサポートがあることを確認したら、次のように実行できます。

/etc/postfix/login_maps.pcre

/^(.*)@example\.org$/   ${1}

main.cf

smtpd_sender_login_maps = pcre:/etc/postfix/login_maps.pcre

これは正常に動作するはずです。

14
mailq

他の回答に記載されている正規表現は、メールアドレスのユーザー部分(logged-in-user@example.org)と一致します。ここにいくつかの追加情報があります。

完全なメールアドレスをユーザー名として使用するには、次の正規表現を使用します(例:/etc/postfix/login_map):

/^(.*)$/   ${1}

これは、ユーザー名が常に完全なメールアドレスであることを意味します([email protected])-他の既存のユーザー名からの送信は許可されませんそのアドレス-ユーザーを追加するたびに追加のPostfix設定ファイルを更新する必要はありません。

これは、複数のドメインが構成されているサーバーで使用される場合があります。ユーザー[email protected]は、そのアドレスからの送信のみが許可され、john.doe @からの送信は許可されませんexample.org(別のユーザーとメール、別の人)。この場合、ユーザー名john.doeはあいまいになります。

また、構成によっては、このファイルをポイントする必要があるsmtpd_sender_login_maps設定が(main.cfではなく)master.cfにある場合があります。公式 Dovecotのドキュメントには次の例があります (SASL/submissionを使用している場合):

submission inet n - n - - smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sender_login_maps=hash:/etc/postfix/virtual
  -o smtpd_sender_restrictions=reject_sender_login_mismatch
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject

この例では、正しいファイルを指すように設定を調整し、タイプとして正規表現または(より良い)pcreを使用する必要があります。特に、「virtual」というファイルが既に別の目的で使用されている場合(たとえば、公式のPostfixの例に示されている virtual_alias_mapsの場合 )、ログインマッピングには別のファイルを使用する必要があります。

から:

smtpd_sender_login_maps=hash:/etc/postfix/virtual

に:

smtpd_sender_login_maps=pcre:/etc/postfix/login_map
6
c0xc

以下に示すように、ヘッダーで正規表現の組み合わせを使用できますか http://www.akadia.com/services/postfix_uce.html ?次に、[* @ example.org]のような正規表現と組み合わせて、example.orgからの送信者のみを確認できます。

0
sonstabo