Назад | Перейти на главную страницу

SMTP-сервер Postfix отправляет электронную почту без аутентификации

Я использую Postfix (2.3.3) на CentOS (5.7). Прямо сейчас мой сервер работает как открытый ретранслятор. Если я укажу логин, он будет работать нормально, как без защиты, так и с использованием TLS (однако TLS недоволен недействительным сертификатом, но я думаю, мне просто нужно получить сертификат). Это то, что я хочу, если клиент не поддерживает TLS, затем откатиться к незащищенному.

Однако кажется, что если я не предоставлю логин, он все равно будет отправлять электронную почту.

Это мой файл конфигурации main.cf:

command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix

myhostname = mail.valdron.ca
mydomain = valdron.ca
myorigin = $mydomain
mydestination = $myhostname, $mydomain

unknown_local_recipient_reject_code = 550

mynetworks = 127.0.0.0/8

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
         xxgdb $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.3.3/samples
readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES

virtual_alias_maps = hash:/etc/postfix/virtual
sender_bcc_maps = hash:/etc/postfix/bcc
mailbox_command = /usr/bin/procmail-wrapper -o -a $DOMAIN -d $LOGNAME
home_mailbox = Maildir/

smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes

smtpd_tls_key_file = /etc/pki/tls/private/mail.valdron.ca.key
smtpd_tls_cert_file = /etc/pki/tls/certs/mail.valdron.ca.cert
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_session_cache_database = btree:/var/spool/postfix/smtpd_tls_cache
tls_random_source = dev:/dev/urandom
mailbox_size_limit = 0
notify_classes = bounce, delay, resource
smtpd_recipient_restrictions = reject_unauth_destination permit_sasl_authenticated permit_mynetworks check_relay_domains
smtpd_tls_security_level = may

Кроме того, не относящиеся к первому вопросу, пользователи iPhone получают следующую ошибку (перевод с французского): «Получатель был отклонен сервером, потому что ретрансляция не разрешена». У меня нет iPhone для тестирования. Возможно ли, что интернет-провайдер заблокирует 25-й порт почтовых серверов, как это делают многие интернет-провайдеры?

Попробуйте изменить строку smtpd_recipient_restrictions на это:

smtpd_recipient_restrictions = reject_unauth_destination, permit_sasl_authenticated, permit_mynetworks, check_relay_domains

Я пытался найти синтаксис, но я всегда использую между значениями, если я не помещаю значения в отдельные строки (в этом случае следующие параметры должны начинаться с пробела), например:

smtpd_recipient_restrictions = reject_unauth_destination
                               permit_sasl_authenticated
                               permit_mynetworks
                               check_relay_domains

Редактировать 1
Хороший инструмент для удаленного тестирования, действительно ли сервер является открытым реле, полезно использовать, просто чтобы избежать ошибок или «ложных срабатываний». Он проверяет около дюжины различных способов ретрансляции и сообщит вам, работает ли какой-либо из них. Просто введите свой IP-адрес в поле и нажмите «Проверить»:
http://www.mailradar.com/openrelay/

Для второго вопроса вы можете проверить, открыт ли порт, используя nmap сканировать хост, или просто telnet hostname 25.

Если телнет что-то отвечает на мелодию 220 mailserver_name ESMTP, значит порт открыт.