외부 이메일 주소(예: Gmail)로 메일을 보낼 수 없습니다.
Telnet을 사용하여 메일을 보내려고 하면 다음 오류가 발생합니다.
Trying 130.xx.xx.128...
Connected to mydomain.com.
Escape character is '^]'.
220 server2.mydomain.com ESMTP Postfix
mail from: [email protected]
250 2.1.0 Ok
rcpt to: [email protected]
554 5.7.1 <[email protected]>: Relay access denied
이것은 내 main.cf 파일입니다.
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
inet_interfaces = all
inet_protocols = all
mydestination = server2.myserver.com, localhost, localhost.localdomain
unknown_local_recipient_reject_code = 550
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.6.6/samples
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
virtual_alias_domains = $virtual_alias_maps
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 = /var/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination
smtpd_use_tls = yes
smtpd_tls_security_level = may
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
relay_domains = mysql:/etc/postfix/mysql-virtual_relaydomains.cf
relay_recipient_maps = mysql:/etc/postfix/mysql-virtual_relayrecipientmaps.cf
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
smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf
smtpd_client_restrictions = check_client_access mysql:/etc/postfix/mysql-virtual_client.cf
maildrop_destination_concurrency_limit = 1
maildrop_destination_recipient_limit = 1
virtual_transport = maildrop
header_checks = regexp:/etc/postfix/header_checks
mime_header_checks = regexp:/etc/postfix/mime_header_checks
nested_header_checks = regexp:/etc/postfix/nested_header_checks
body_checks = regexp:/etc/postfix/body_checks
myhostname = server2.myserver.com
mynetworks = 127.0.0.0/8 [::1]/128
content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings
어떻게 해야 합니까?
답변1
문제를 이해하는 열쇠는 다음 두 줄입니다.
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination
mynetworks = 127.0.0.0/8 [::1]/128
mynetworks
localhost만 나열되고, 연결 기록에는 localhost에 연결 중임을 나타내는 내용이 없습니다(사실 연결되지 않았음을 나타내는 내용이 많습니다). SASL을 통해 인증하고 있지 않습니다.
reject_unauth_destination
따라서 거의 확실하게 끝에 도달하게 되며 이는 메일 거래가 거부됨을 의미합니다.
루프백 인터페이스를 통해 메일 서버에 연결하거나, mynetworks
연결하려는 IP 주소를 포함하도록 확장하거나, SASL을 사용하여 메일 서버에 인증하세요. 그러면 릴레이가 더 잘 작동할 것입니다.
또한 이러한 문제를 해결하기 위한 좋은 장소는 일반적으로 서버 로그입니다. 메일 거래가 거부된 이유에 대한 세부 정보는 거의 포함되지 않으며 일반적으로 해결 방법을 알려줍니다.