Задний план
Моя организация отправляет электронные письма со списком из плагина Mailpoet в Wordpress, размещенного на Linode VPS.
У нас есть второй VPS с установленным Postfix, который используется в качестве SMTP-сервера для рассылок Mailpoet. (Это работает под управлением Debian GNU / Linux 4.0r9)
Мы готовимся переместить сайт Wordpress на новый хост (Kinsta).
Проблема
Во время тестирования мы определили, что Mailpoet не может отправлять сообщения через SMTP-сервер Postfix из установки Kinsta.
Я не знаком с Postfix, но, читая документацию, кажется, что mynetworks
переменная конфигурации должна устанавливать, какие IP-адреса разрешено отправлять (или ретранслировать) через Postfix. Я добавил IP-адреса Kinsta в этот список и подтвердил, postconf
что конфигурация была обновлена.
IP-адреса Kinsta не отображаются в Postfix mail.err
или mail.warn
журналы.
Насколько я могу судить, на VPS не работает брандмауэр (но я подозреваю, что соединение может быть заблокировано где-то, кроме Postfix).
Если это будет полезно, я могу разместить здесь конфигурацию Postfix.
Вопросы
Я не нашел хорошего способа решить эту проблему. Как бы вы подошли к определению, почему соединение Postfix не принимается?
Вы знаете другие места, кроме mynetworks
значение, где новый IP нужно будет добавить в Postfix?
У меня нет документации по настройке VPS. Что бы вы порекомендовали посмотреть, чтобы определить, не блокируются ли соединения с сервера Kinsta где-то еще в системе?
Спасибо за вашу помощь!
Изменить: вот содержимое /etc/postfix/main.cf:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
#needed for backscatter prevention
unknown_local_recipient_reject_code = 550
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = yes
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
myhostname = mail.ic.org
alias_maps = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost, 74.50.52.128
#mydestination = ic.org, mail.ic.org, localhost,74.50.52.128
#Mailman config lines
relay_domains = ic.org, lists.ic.org
transport_maps = hash:/etc/postfix/transport
mailman_destination_recipient_limit = 1
# 15MB maximum message size
message_size_limit = 25000000
mynetworks = 127.0.0.0/8, 65.216.227.186,216.145.134.0/24, 72.249.39.3, 35.245.151.137, 35.230.170.90
# Added Kinsta 35.245.151.137 and 35.230.170.90 IPs 2020-06-30
mailbox_command = procmail
mailbox_size_limit = 0
recipient_delimiter = +
home_mailbox = Maildir/
virtual_alias_maps = hash:/etc/postfix/virtual
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
## Use the ordb.org Real Time Black Hole list
smtpd_client_restrictions = permit_mynetworks, check_client_access hash:/etc/postfix/whitelist, reject_rbl_client sbl-xbl.spamhaus.org, permit
## Don't accept email when the email address used isn't a real domain
smtpd_sender_restrictions = reject_unknown_sender_domain
default_rbl_reply = $rbl_code Service unavailable; Your message has been blocked because your server is listed in spamhaus (see http://www.spamhaus.org/faq/)
#smtpd_tls_auth_only = yes
#turned these off 8/30/07
#smtp_use_tls = yes
#smtpd_use_tls = yes
#smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/tls/smtpd.key
smtpd_tls_cert_file = /etc/postfix/tls/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/tls/cacert.pem
smtpd_tls_mandatory_protocols = SSLv3, TLSv1
smtpd_tls_mandatory_ciphers = medium, high
smtpd_tls_loglevel = 3
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
fork_delay = 5s
default_process_limit = 50
maximal_queue_lifetime = 3d
content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings
qmgr_message_active_limit = 200
queue_run_delay = 2000s
maximal_backoff_time = 8000s
minimal_backoff_time = 2000s
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination
smtpd_relay_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
Изменить: вывод файла журнала mail.info, охватывающий время попытки отправки сообщения с сервера Kinsta, выглядит так:
Jul 1 15:07:25 mail postfix/smtpd[10655]: warning: unknown[185.143.72.25]: SASL LOGIN authentication failed: authentication failure
Jul 1 15:07:25 mail postfix/smtpd[13838]: warning: unknown[185.143.73.58]: SASL LOGIN authentication failed: authentication failure
Jul 1 15:07:25 mail postfix/smtpd[10541]: connect from unknown[212.70.149.2]
Jul 1 15:07:25 mail postfix/smtpd[10431]: disconnect from unknown[185.143.73.162]
Jul 1 15:07:26 mail postfix/smtpd[13838]: disconnect from unknown[185.143.73.58]
Jul 1 15:07:26 mail postfix/smtpd[10655]: disconnect from unknown[185.143.72.25]
Jul 1 15:07:27 mail postfix/smtpd[10400]: connect from unknown[46.38.150.47]
Jul 1 15:07:27 mail postfix/smtpd[10648]: connect from unknown[185.143.72.16]
Jul 1 15:07:30 mail postfix/smtpd[13838]: connect from unknown[212.70.149.2]
Jul 1 15:07:31 mail postfix/smtpd[10400]: warning: unknown[46.38.150.47]: SASL LOGIN authentication failed: authentication failure
Jul 1 15:07:32 mail postfix/smtpd[10541]: warning: unknown[212.70.149.2]: SASL LOGIN authentication failed: authentication failure
Jul 1 15:07:32 mail postfix/smtpd[10655]: connect from unknown[212.70.149.50]
Jul 1 15:07:32 mail postfix/smtpd[10400]: disconnect from unknown[46.38.150.47]
Jul 1 15:07:33 mail postfix/smtpd[10648]: warning: unknown[185.143.72.16]: SASL LOGIN
IP-адреса Kinsta не отображаются в журнале.
Это вывод журнала, охватывающий успешную отправку тестового письма с текущего (linode) сервера:
Jul 1 15:18:04 mail postfix/smtpd[15020]: connect from li1258-185.members.linode.com[45.79.159.185]
Jul 1 15:18:04 mail postfix/smtpd[15803]: warning: unknown[185.143.73.175]: SASL LOGIN authentication failed: authentication failure
Jul 1 15:18:05 mail postfix/smtpd[14820]: warning: unknown[141.98.10.192]: SASL LOGIN authentication failed: authentication failure
Jul 1 15:18:05 mail postfix/smtpd[14820]: disconnect from unknown[141.98.10.192]
Jul 1 15:18:05 mail postfix/smtpd[15466]: warning: unknown[185.143.73.93]: SASL LOGIN authentication failed: authentication failure
Jul 1 15:18:05 mail postfix/smtpd[15020]: 7146B139516: client=li1258-185.members.linode.com[45.79.159.185], sasl_method=LOGIN, sasl_username=noreply
Jul 1 15:18:05 mail postfix/smtpd[15802]: connect from unknown[185.143.73.58]
Jul 1 15:18:05 mail postfix/cleanup[16040]: 7146B139516: message-id=<7335e34f2227a9a8075eeea307bac260@www.ic.org>
Jul 1 15:18:05 mail postfix/smtpd[15466]: disconnect from unknown[185.143.73.93]
Jul 1 15:18:05 mail postfix/smtpd[15803]: disconnect from unknown[185.143.73.175]
Jul 1 15:18:05 mail postfix/smtpd[15020]: disconnect from li1258-185.members.linode.com[45.79.159.185]
Jul 1 15:18:06 mail postfix/smtpd[15461]: connect from unknown[185.143.73.148]
Jul 1 15:18:07 mail postfix/smtpd[15019]: warning: unknown[212.70.149.82]: SASL LOGIN authentication failed: authentication failure
Jul 1 15:18:07 mail postfix/smtpd[14030]: warning: unknown[46.38.150.72]: SASL LOGIN authentication failed: authentication failure
Jul 1 15:18:07 mail postfix/smtpd[14030]: disconnect from unknown[46.38.150.72]
Jul 1 15:18:07 mail postfix/smtpd[15019]: disconnect from unknown[212.70.149.82]
Jul 1 15:18:07 mail postfix/qmgr[6066]: 7146B139516: from=<noreply@ic.org>, size=1079, nrcpt=1 (queue active)
С советами от @MichaelHampton я в конце концов понял, что проблема вообще не связана с Postfix.
Mailpoet использует PHP stream_socket_client()
функция для подключения к удаленному SMTP-серверу. Я сделал тестовый сценарий, который использовал эту функцию и те же параметры, и попробовал его с сервера Kinsta и с двух других произвольных серверов. Другие серверы подключились нормально, и время ожидания сервера Kinsta истекло.
После продолжительного разговора со службой поддержки Kinsta стало ясно, что инфраструктура Google Cloud, на которой работает Kinsta, запрещает все исходящие подключения к порту 25.
Таким образом, окончательным решением было отредактировать файл master.cf Postfix, чтобы разрешить соединения через порт 587, а затем использовать этот порт в Mailpoet.
Спасибо за подсказки, которые привели к этому решению.