私はPostfix/Courierメールサーバー(SASL/MySQLで認証)を持っています。このチュートリアル現在、私は Debian 6 でサーバーを実行しています。これは VPS です。私の見る限りでは問題なく動作していますが、受信メールの送信に認証を要求できないようです。SMTP 認証を無効にした Outlook から自分にメールを送信すると、すべてが正常に行われ、拒否されることはなく、サーバーのログに次のように表示されます。
Dec 19 09:39:33 new postfix/smtpd[20439]: connect from unknown[****]
Dec 19 09:39:33 new postfix/smtpd[20439]: 7FF1E469840: client=unknown[****]
Dec 19 09:39:33 new postfix/cleanup[20444]: 7FF1E469840: message-id=<000c01cefc31$41319a90$c394cfb0$@email@mydomain>
Dec 19 09:39:33 new postfix/qmgr[20429]: 7FF1E469840: from=<email@mydomain>, size=2730, nrcpt=1 (queue active)
Dec 19 09:39:33 new postfix/virtual[20445]: 7FF1E469840: to=<email@mydomain>, relay=virtual, delay=0.49, delays=0.4/0.08/0/0.01, dsn=2.0.0, status=sent (delivered to maildir)
Dec 19 09:39:33 new postfix/qmgr[20429]: 7FF1E469840: removed
Dec 19 09:39:36 new postfix/smtpd[20439]: disconnect from unknown[****]
****
電子メールクライアントのIPアドレスを示します
しかし、Gmail アドレスなどの外部ドメインにメールを送信しようとすると、予想どおり、メールは拒否され、返送されます。
Your message did not reach some or all of the intended recipients.
Subject:
Sent: 19/12/2013 9:49 a.m.
The following recipient(s) cannot be reached:
'[email protected]' on 19/12/2013 9:49 a.m.
Server error: '554 5.7.1 <[email protected]>: Relay access denied'
ログには認証の拒否に関する情報も出力されます(これは予想通りです)
Dec 19 09:48:34 new postfix/smtpd[20449]: connect from unknown[****]
Dec 19 09:48:34 new postfix/smtpd[20449]: NOQUEUE: reject: RCPT from unknown[****]: 554 5.7.1 <[email protected]>: Relay access denied; from=<email@mydomain> to=<[email protected]> proto=ESMTP helo=<MyPC>
Dec 19 09:48:36 new postfix/smtpd[20449]: disconnect from unknown[****]
メール クライアント (Outlook) で SMTP 認証を有効にすると、すべてが期待どおりに動作します。実際には、私が見ていない認証が行われているのでしょうか、それとも、内部メールのオープン リレーとして動作しているのでしょうか。このような場合、すべてのメールに対して認証を強制するにはどうすればよいでしょうか。
私の main.cf は次のとおりです:
relayhost =
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_protocols = all
broken_sasl_auth_clients = yes
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key
transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf
virtual_create_maildirsize = yes
virtual_maildir_extended = yes
virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "The user you are trying to reach is over quota."
virtual_overquota_bounce = yes
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
答え1
あなたのサーバーはオープンリレーではありません。次の 3 種類のメールを許可するように設定されています:
- インターネット上の誰からのメールに独自のドメイン内のアドレス
- 独自のメールサーバーから発信されたメール(例:cronジョブからの通知など)をインターネット上の誰にでも送信
- インターネット上の誰とでも認証された接続から送信されるメール
メールが上記のいずれかに一致しない場合、スパマーが送信者アドレスとしてあなたのドメインに偽のアドレスを置いたとしても、メールサーバーはそれを拒否します。
答え2
私が見ていない認証が実際に行われているのでしょうか
はい
それとも、これは内部メールのオープンリレーとして機能しているのでしょうか?
いいえ、アクセスが拒否されているようです
このような場合、すべての電子メールに対して認証を強制するにはどうすればよいでしょうか?
あなたは今それを強制している
メールサーバーにtelnet接続する
telnet ipaddress 25