Я следил за этим руководством: http://flurdy.com/docs/postfix/index.html
По какой-то причине, даже после того, как я убедился, что я правильно его настроил, он не будет отправлять почту на внешние домены. Он все еще может получать от них, но отправка результатов в этом:
postfix/smtpd[26338]: NOQUEUE: reject: RCPT from localhost[127.0.0.1]: 554 5.7.1 <xxxx@gmail.com>: Relay access denied; from=<user@domain.com> to=<xxxx@gmail.com> proto=ESMTP helo=<domain.com>
У меня включен TLS, как и amavis. Отключение одного (или обоих) ничего не меняет. Я также могу отправить на свой домен, и он будет доставлен правильно.
Вот мой /etc/postfix/main.cf:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
myorigin = domain.com
masquerade_domains = mail.domain.com
masquerade_exceptions = root
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/postfix/postfix.cert
smtpd_tls_key_file=/etc/postfix/postfix.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 3
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = mail.domain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = mail.domain.com
mydestination = domain.com, localhost, localhost.localdomain
relayhost =
mynetworks = 127.0.0.0/8, [::ffff:127.0.0.0]/104, [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
mynetworks_style = host
local_recipient_maps =
mydestination =
delay_warning_time = 4h
unknown_local_recipient_reject_code = 450
maximum_queue_lifetime = 7d
minimal_backoff_time = 1000s
maximal_backoff_time = 8000s
smtp_helo_timeout = 60s
smtpd_recipient_limit = 32
smtpd_soft_error_limit = 3
smtpd_hard_error_limit = 12
smtpd_helo_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_hostname, reject_invalid_hostname, permit
smtpd_sender_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unauth_pipelining, permit_sasl_authenticated, permit
smtpd_client_restrictions = reject_rbl_client sbl.spamhaus.org, reject_rbl_client blackholes.easynet.nl, reject_unauth_destination, permit
smtpd_recipient_restrictions = reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, permit
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_helo_required = yes
smtpd_delay_reject = yes
disable_vrfy_command = yes
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
virtual_mailbox_base = /var/spool/mail/virtual
virtual_mailbox_maps = mysql:/etc/postfix/mysql_mailbox.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_alias.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_domains.cf
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
content_filter = amavis:[127.0.0.1]:10024
# SASL
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = no
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = domain.com
удалять reject_unauth_destination
из smtpd_client_restrictions
.
РЕДАКТИРОВАТЬ
Ты используешь SMTP для отправки электронной почты, поэтому postfix
все еще использует все smtpd_*_restrictions
даже если вы подключаетесь из 127.0.0.1
. Эти smtpd_*_restrictions
применяются в следующих порядок: клиент, Helo, отправитель, получатель, данные или конец данных. reject_unauth_destination
отклоняет любую почту, если домен в RCPT TO Спички $mydestionation
или $relay_domains
. В вашем случае, когда reject_unauth_destination
используется в smtpd_client_restrictions
, который проверяется в первую очередь, ваша почта почти сразу (после проверки двух RBL) отклоняется, потому что ваш postfix
очевидно, что это не конечный пункт назначения для gmail.com и все правила, разрешающие ретрансляцию почты от локальных или аутентифицированных клиентов (permit_mynetworks
, permit_sasl_authenticated
) являются пропущено потому что вы уже получили REJECT от smtpd_client_restrictions
.
Спасибо, я отсортировал все smtpd_client_restrictions и моя конфигурация работает
Эта конфигурация должна работать:
smtpd_recipient_restrictions =
check_policy_service unix:/var/spool/postfix/postgrey/socket,
reject_rbl_client xbl.spamhaus.org,
reject_rbl_client pbl.spamhaus.org,
reject_rbl_client sbl.spamhaus.org,
reject_rbl_client multi.uribl.com,
reject_rbl_client rbl-plus.mail-abuse.org,
reject_rbl_client dialups.mail-abuse.org,
permit_mynetworks,
reject_unauth_destination,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unknown_recipient_domain
Сортировка важна.
У меня была аналогичная проблема, это меня спасло:
smtpd_relay_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
Вы должны настроить свой сервер для ретрансляции.
Попробуйте добавить внешний smtp-хост для опции relayhost:
postconf -e 'relayhost = smtp.example.com'