Я использую 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
, значит порт открыт.