解決策 1:
まず、コマンド 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
これで問題なく動作するはずです。
解決策 2:
他の回答で言及されている正規表現は、メールアドレスのユーザー部分 (logged-in-user) と一致します @example.org)。ここに追加情報があります。
完全な電子メール アドレスをユーザー名として使用するには、次の正規表現を使用します (例:/etc/postfix/login_map
):
/^(.*)$/ ${1}
これは、ユーザー名が常に完全なメール アドレスであることを意味します ([email protected])。 ) - そのアドレスから他の既存のユーザー名を送信することは許可されていません。また、ユーザーを追加するたびに追加の Postfix 構成ファイルを更新する必要はありません。
これは、複数のドメインが構成されているサーバーで使用される場合があります。ユーザー [email protected] そのアドレスからのみ送信できますが、[email protected] からは送信できません (別のユーザーと電子メール、別の人)。ユーザー名 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
この例では、正しいファイルを指すように設定を調整し、タイプとして regex または (より適切な) pcre を使用する必要があります。特に、"virtual" と呼ばれるファイルが別の目的で既に使用されている場合 (たとえば、公式の Postfix の例に示されているように virtual_alias_maps など)、別のファイルをログイン マッピングに使用する必要があります。
差出人:
smtpd_sender_login_maps=hash:/etc/postfix/virtual
宛先:
smtpd_sender_login_maps=pcre:/etc/postfix/login_map