今朝、セキュリティ証明書の名前の不一致の問題を修正するために、から推奨される手順に従いましたメールサーバーのSSLを修正する方法ですが、クライアント(この場合、クライアントはWindowsメール)からメールを送信しようとすると、次のエラーが表示されます。
拒否されたメールアドレスは「[email protected]」でした。被験者 'これはテストです。 '、アカウント:' mail.domain.com '、サーバー:' mail.domain.com '、プロトコル:SMTP、サーバーの応答:' 554 5.7.1:リレーアクセスが拒否されました '、ポート:25、セキュア(SSL):いいえ、サーバーエラー:554、エラー番号:0x800CCC79
編集する:このアカウントからメールを取得することはできますが、同じドメインの他のアカウントにメールを送信します。ドメイン外の受信者にメールを送信できません。
TLSを完全に無効にしてみましたが、サイコロはありません。それでも同じエラーが発生します。
ファイルをチェックするとmail.log
、次のように見えます。
Jul 18 08:24:41 company imapd: LOGIN, [email protected], ip=[::ffff:111.111.11.11], protocol=IMAP
Jul 18 08:24:42 company imapd: DISCONNECTED, [email protected], ip=[::ffff:111.111.11.11], headers=0, body=0, rcvd=83, sent=409, time=1
Jul 18 08:25:19 company postfix/smtpd[29282]: connect from company.university.edu[111.111.11.11]
Jul 18 08:25:19 company postfix/smtpd[29282]: NOQUEUE: reject: RCPT from company.university.edu[111.111.11.11]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<UserPC>
Jul 18 08:25:19 company postfix/smtpd[29282]: disconnect from company.university.edu[111.111.11.11]
Jul 18 08:25:22 company imapd: DISCONNECTED, [email protected], ip=[::ffff:111.111.11.11], headers=13, body=142579, rcvd=3289, sent=215892, time=79
ファイルmain.cf
は次のようになります。
#
# Postfix MTA Manager Main Configuration File;
#
# Please do NOT edit this file manually;
#
#
# Postfix directory settings; These are critical for normal Postfix MTA functionallity;
#
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix
#
# Some common configuration parameters;
#
inet_interfaces = all
mynetworks = 127.0.0.0/8
mynetworks_style = Host
myhostname = mail.domain.com
mydomain = domain.com
myorigin = $mydomain
smtpd_banner = $myhostname ESMTP 2.4.7.1 (Debian/GNU)
setgid_group = postdrop
#
# Receiving messages parameters;
#
mydestination = localhost, company
append_dot_mydomain = no
append_at_myorigin = yes
transport_maps = mysql:/etc/postfix/transport.cf
#
# Delivering local messages parameters;
#
mail_spool_directory = /var/spool/mail
mailbox_size_limit = 0
mailbox_command = procmail -a "$EXTENSION"
biff = no
alias_database = hash:/etc/aliases
local_recipient_maps =
#
# Delivering virtual messages parameters;
#
virtual_mailbox_maps=mysql:/etc/postfix/mysql_virt.cf
virtual_uid_maps=mysql:/etc/postfix/uids.cf
virtual_gid_maps=mysql:/etc/postfix/gids.cf
virtual_mailbox_base=/usr/local/virtual
virtual_maps=mysql:/etc/postfix/virtual.cf
virtual_mailbox_domains=mysql:/etc/postfix/virtual_domains.cf
#
# SASL paramters;
#
smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtp_tls_CAfile = /etc/postfix/ssl/smptd.pem
smtp_tls_cert_file = /etc/postfix/ssl/smptd.crt
smtp_tls_key_file = /etc/postfix/ssl/smptd.key
smtpd_tls_CAfile = /etc/postfix/ssl/smptd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smptd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smptd.key
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
broken_sasl_auth_clients = yes
smtpd_sender_restrictions =
permit_sasl_authenticated
permit_mynetworks
smtpd_recipient_restrictions =
permit_sasl_authenticated
check_recipient_access hash:/etc/postfix/filtered_domains
permit_mynetworks
reject_unauth_destination
ちなみに、私の雇用主は、クライアント(ThunderbirdとOutlook)からローカルネットワーク内と外部の両方からメールを送信できるようにしたいと考えています。
TLSはsmtpセッションでの暗号化を有効にするだけで、Postfixがメッセージをリレーすることを許可するかどうかに直接影響しません。
中継拒否メッセージは、smtpd_recipient_restrictionsルールが一致しなかったために発生します。メッセージが通過できるようにするには、これらの条件の1つを満たす必要があります。
smtpd_recipient_restrictions =
permit_sasl_authenticated
check_recipient_access hash:/etc/postfix/filtered_domains
permit_mynetworks
reject_unauth_destination
それらのルールを説明するには:
permit_sasl_authenticated
sASL経由で認証された送信者を許可します。これは、通常はブロックされているネットワーク外のユーザーを認証するために必要です。
check_recipient_access
これにより、postfixは/ etc/postfix/filtered_domainsで受信者アドレスに基づくルールを探します。 (ファイル名のファイル名から判断すると、おそらく特定のドメインをブロックしているだけです... gmail.comがそこにリストされているかどうかを確認してください。)
permit_mynetworks
これにより、$ mynetworksで指定されたIP範囲と一致するIPアドレスでホストが許可されます。投稿したmain.cfでは、$ mynetworksが127.0.0.1に設定されているため、サーバー自体によって生成された電子メールのみがリレーされます。
その構成に基づいて、メールクライアントはメッセージのリレーを許可される前にSMTP認証を使用する必要があります。 SASLが使用しているデータベースがわかりません。これは/usr/lib/sasl2/smtpd.confで指定されていると思われます。おそらく仮想メールボックスと同じデータベースも使用しているため、メールクライアントでSMTP認証を有効にして、すべてを設定できるはずです。
smtpd_use_tls = no
TLSを無効にしたので、mynetworks
に追加してローカルネットワークを承認する必要があります。例えば、
mynetworks = 192.168.1.0/24 127.0.0.0/8
これにより、ローカルネットワークからの送信のみが修正されます。ローカルネットワークの外部からメールを送信するには、TLS認証を機能させる必要があります。
デフォルトのrelay_domains=$mydestination
なので、mydestinationでdomain.comが恋しいと思うので、次の行を設定に追加できます。
mydestinations = $mydomain, $myhostname, localhost, localhost.localdomain
または:
relay_domains = $mydomain
Postfix confファイルを編集するたびに、postfixサーバー(service postfix restart
)を再起動することを忘れないでください。
Outlookで同じ問題があり(dovecoteおよびpostfixバックエンドを使用)、2日間かけて解決策を探し、構成ファイルを微調整しました。 Outlookのメール設定の[送信]タブで[サーバーは認証が必要]をオンにするだけで、メッセージがGmailに送信されます。ここで設定を見つける方法の詳細な説明 http://support.bluetie.com/node/44 を参照してください。
この問題はしばらくの間私を悩ませていました。 server1.domain.comからserver2.domain.comに接続しようとしていました。
これが私がこれを修正した方法です-
#/etc/postfix/main.cf
mydomain = server1.domain.com
myhostname = $mydomain
virtual_alias_maps = hash:/etc/postfix/virtual
alias_database = hash:/etc/postfix/virtual
myorigin = /etc/mailname
mydestination = localhost.localdomain localhost $mydomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
また、/ etc/hostsと/ etc/hostnameが正しく設定されていることを確認し、ネットワークの変更後に次のコマンドを実行する必要があります。
Sudo service networking restart
およびpostfix構成変更後の以下
Sudo service postfix reload
私にとって:事実に関係なくlocalhost
をmynetworks
に追加する必要がありました127.0.0.0/8
はすでにそこにありました。だから、今それは見えます:
mynetworks = 1.1.1.1/32, 127.0.0.0/8, localhost