Postfixで送信者アドレスを「logged-in-user@example.org」に強制するにはどうすればよいですか?


15

SMTP AUTH(ポート587のSTARTTLS)でPostfixサーバーをセットアップしました。すべてのユーザーはドメイン「example.org」に属します。送信者アドレスを「logged-in-user@example.org」に強制します。

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

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

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

a@example.org a
b@example.org b
c@example.org c
...

SMPT AUTHで送信者アドレスのなりすましをブロックするもご覧ください)、これは、新しいユーザーがいるたびにlogin_mapsファイルを編集する必要があることを意味します。このような柔軟なマッピングは必要ありません。常に「logged-in-user@example.org」である必要があります。もっと簡単なオプションはありますか?

回答:


14

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

/etc/postfix/login_maps.pcre

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

main.cf

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

これでうまくいくはずです。


これは完璧です。まさに私が探していたもの!
クリスラーチャー

3
Ubuntuユーザーの場合、でpostfix pcreを取得できますsudo apt-get install postfix-pcre。たぶんこれはほとんどの人にとって明らかだった。
ニール月曜日

正規表現または参照$myhostname変数でドメインを省略する方法はありませんか?ここであなたは... Postfixがメールのユーザ部分でルックアップテーブルを検索することが可能であることを見ることができます
ハイメHablutzel

「。」をバックスラッシュでエスケープしたいと思うと思います。/^(.*)@example\.org$/
Arnon

それ以外の場合、これは「test @ exampleXorg」と「test@example.org」に一致しますが、これは意図したとおりの動作ではない場合があります。
アーノン

6

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

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

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

これは、ユーザー名が常に完全なメールアドレス(logged-in-user@example.org)であることを意味します-他の既存のユーザー名はそのアドレスからの送信を許可されていませんユーザーを追加します。

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

また、構成によっては、このファイルを指す必要があるsmtpd_sender_login_maps設定がmaster.cf(main.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

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

から:

smtpd_sender_login_maps=hash:/etc/postfix/virtual

に:

smtpd_sender_login_maps=pcre:/etc/postfix/login_map

0

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


ここで「regexp:」を使用できると仮定してみましょう(?)ユーザー「a」が「b@example.org」ではなく「a@example.org」として送信できるような正規表現を指定するにはどうすればよいですか?
クリスラーチャー

@sonstabo構成サンプルを含めるといいと思います
ハイメHablutzel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.