Postfix は、"from:" アドレスを確認するために sender_login_maps を使用しません。

Postfix は、

(仮想)ユーザーが自分が所有する「送信者:」アドレスを使用してのみ送信できるサフィックス構成を設定しようとしています。だから私は飛び込んreject_authenticated_sender_login_mismatchsmtpd_sender_restrictions

使用

query = SELECT goto FROM alias WHERE address='%s' and active=1;

私の場合は、sender_login_maps.cf私が希望する送信者アドレスを使用してメールを送信できますmadeup@not_my_domain.com

しかし、

postmap -q "madeup@not_my_domain.com" mysql:/etc/postfix/sql/sender_login_maps.cf 

期待どおりに何も返されません。

今度はクエリを次に変更すると

SELECT goto FROM alias WHERE address='notinthedatabaseforsure' and active=1; 

まったくメールを送信できません。今まではそんなに良くなった。しかし、ログによると

postfix/smtps/smtpd[11683]: NOQUEUE: reject: RCPT from...: 553 5.7.1 <[email protected]>: 
  Sender address rejected: not owned by user [email protected]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[192.168.2.103]>

で送ろうとしてもmadeup@not_my_domain.com[email protected]ログイン名、[email protected]受信者です。

正しい設定では、次のことが期待できます。

postfix/smtps/smtpd[11683]: NOQUEUE: reject: RCPT from ...: 553 5.7.1 <madeup@not_my_domain.com>: 
  Sender address rejected: not owned by user [email protected]; from=<madeup@not_my_domain.com> to=<[email protected]> proto=ESMTP helo=<[192.168.2.103]>

したがって、postfixはログイン名を使用して送信者のアドレスに関係なくログイン名を取得するようです。これは、前述のクエリを使用して送信者アドレスに送信できる理由を説明します。

修正する:私のSQLログを確認しましたが、実際にMySQLサーバーはmadeup@not_my_domain.comログインアドレスと受信者アドレスのみを取得します[email protected]

master.cfとmain.cfのsmtpsセクションは次のとおりです。

smtps inet n - - - - smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o tls_preempt_cipherlist=yes
  -o smtpd_tls_security_level=暗号化
  -o smtpd_sasl_auth_enable=はい
  -o smtpd_client_restrictions=permit_sasl_authenticated,rejected
  -o milter_macro_daemon_name=原産地
  -o smtpd_sasl_type=ハト
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_relay_restrictions=reject_non_fqdn_recipient, recognition_unknown_recipient_domain, 許可_mynetworks, 許可_sasl_authenticated, 拒否
  -o milter_macro_daemon_name=原産地
  -o cleanup_service_name=ヘッダ整理コミット
マイネットワーク = 127.0.0.0/8
inet_interfaces=すべて
mydomain=ドメイン名.com
myhostname=mail.domain.com
私のソース= $mydomain
私の目的地=
リレーホスト=


smtpd_relay_restrictions=permit_mynetworks, allowed_sasl_authenticated,ject_unauth_destination, recognition_non_fqdn_recipient

smtpd_recipient_restrictions =
 私のネットワークを許可し、
 許可_sasl_認証、
 Reject_non_fqdn_ホスト名、
 FQDNではなく発信者を拒否します。
 FQDNではなく受信者を拒否します。
 拒否_unauth_ターゲット、
 拒否_unauth_パイプライン、
 無効なホスト名の拒否

smtpd_sender制限=
 FQDNではなく発信者を拒否します。
 不明な発信​​者ドメインの拒否、
 拒否_unauth_パイプライン、
 accept_authenticated_sender_login_mismatch,
 allowed_sasl_authenticated

smtpd_helo_required=はい
smtpd_helo_restrictions=permit_mynetworks
                            deny_invalid_helo_hostname
                            accept_non_fqdn_helo_hostname
                            拒否_不明_helo_ホスト名

smtpd_data_restrictions=deny_unauth_pipelined

smtpd_sasl_auth_enable=はい
smtpd_sasl_security_options = noanonymous,noplaintext
smtpd_sasl_type=鳩
smtpd_sasl_path =個人/認証

postscreen_access_list=permit_mynetworks
                                cidr:/etc/postfix/postscreen_access
postscreen_blacklist_action=削除
postscreen_greet_action =下にしてください

postscreen_dnsbl_threshold = 2
postscreen_dnsbl_sites = dnsbl.sorbs.net*1、bl.spamcop.net*1、ix.dnsbl.manitu.net*2、zen.spamhaus.org*2
postscreen_dnsbl_action=削除

virtual_alias_maps = mysql:/etc/postfix/sql/aliases.cf
virtual_mailbox_maps = mysql:/etc/postfix/sql/accounts.cf
virtual_mailbox_domains = mysql:/etc/postfix/sql/domains.cf
リレードメイン = mysql:/etc/postfix/sql/relay_domains.cf
smtpd_sender_login_maps = mysql:/etc/postfix/sql/sender_login_maps.cf


virtual_uid_maps =静的:3000
virtual_gid_maps =静的:3000
virtual_mailbox_base = /home/vmail

# NIS ルックアップ警告を無効にします。
alias_maps=ハッシュ:/etc/aliases

Append_mydomain=いいえ
受信者の区切り文字 = +

ベストアンサー1

ログインしたユーザーが使用する前に必要な[email protected]方法でのみ送信できる場合[email protected]reject_sender_login_mismatchpermit_sasl_authenticated

smtpd_sender_restrictions = 
    # ... skip ...
    reject_sender_login_mismatch
    permit_sasl_authenticated

このオプション機能を含む両方 reject_authenticated_sender_login_mismatchの合計です reject_unauthenticated_sender_login_mismatch

また、ユーザーのSQLクエリが電子メール(ログインとも呼ばれる)を返すことを確認してください。これに対してpostfixはテストを実行します。ただ戻ったり1、別の「実際の」値を返した場合、期待どおりに動作しない可能性があります。

おすすめ記事