Я использую Ubuntu 16.04 на Amazon Lightsail. Я просто настраиваю Postfix для отправки писем.
Если я отправлю электронное письмо через несколько часов, оно будет получено мгновенно.
Если я отправляю несколько писем одновременно, они задерживаются примерно на 10-30 минут.
Вопросы:
Моя конфигурация:
/etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 172.x.x.x
search ec2.internal
/ etc / hosts
127.0.0.1 localhost
127.0.1.1 webserver.DOMAIN-NAME.com webserver
3x.x.x.x webserver.DOMAIN-NAME.com webserver #3.x.x.x is the IP that is mentioned in domain DNS
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
/ etc / hostname
webserver
/ etc / aliases
postmaster: root
root: myemail@address.com
/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 = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
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/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.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
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = webserver.DOMAIN-NAME.com
mydomain = DOMAIN-NAME.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
#myorigin = /etc/mailname
myorigin = $mydomain
#mydestination = $myhostname, DOMAIN-NAME.com, webserver.DOMAIN-NAME.com, localhost.DOMAIN-NAME.com, localhost
mydestination =
#relayhost =
relayhost = $mydomain
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
#inet_interfaces = all
inet_interfaces = loopback-only
#inet_protocols = all
inet_protocols = ipv4
/var/log/mail.log
May 1 02:17:15 webserver postfix/smtp[6105]: 0287CC775F: to=<alex@DOMAIN-NAME.com>, relay=alt1.aspmx.l.google.com[64.233.190.27]:25, delay=531, delays=465/0.01/64/1.9, dsn=2.0.0, status=sent (250 2.0.0 OK 1493605035 h2si13051738qte.100 - gsmtp)
May 1 02:17:15 webserver postfix/qmgr[6102]: 0287CC775F: removed
May 1 02:17:40 webserver postfix/smtp[6107]: connect to alt1.aspmx.l.google.com[64.233.190.27]:25: Connection timed out
May 1 02:17:40 webserver postfix/smtp[6108]: connect to alt1.aspmx.l.google.com[64.233.190.27]:25: Connection timed out
May 1 02:18:10 webserver postfix/smtp[6108]: connect to aspmx2.googlemail.com[64.233.190.27]:25: Connection timed out
May 1 02:18:10 webserver postfix/smtp[6107]: connect to aspmx3.googlemail.com[209.85.203.26]:25: Connection timed out
May 1 02:18:40 webserver postfix/smtp[6108]: connect to aspmx3.googlemail.com[209.85.203.26]:25: Connection timed out
May 1 02:18:40 webserver postfix/smtp[6107]: connect to aspmx2.googlemail.com[64.233.190.27]:25: Connection timed out
May 1 02:18:40 webserver postfix/smtp[6108]: CBE50C77C6: to=<alex@DOMAIN-NAME.com>, relay=none, delay=7845, delays=7695/0.02/150/0, dsn=4.4.1, status=deferred (connect to aspmx3.googlemail.com[209.85.203.26]:25: Connection timed out)
May 1 02:18:40 webserver postfix/smtp[6107]: 2266DC775D: to=<alex123@gmail.com>, relay=none, delay=174, delays=24/0.01/150/0, dsn=4.4.1, status=deferred (connect to aspmx2.googlemail.com[64.233.190.27]:25: Connection timed out)
May 1 02:20:02 webserver postfix/scache[6110]: statistics: start interval May 1 02:16:41
May 1 02:20:02 webserver postfix/scache[6110]: statistics: domain lookup hits=0 miss=1 success=0%
May 1 02:20:02 webserver postfix/scache[6110]: statistics: address lookup hits=0 miss=2 success=0%
May 1 02:20:02 webserver postfix/scache[6110]: statistics: max simultaneous domains=1 addresses=1 connection=1
May 1 02:26:10 webserver postfix/qmgr[6102]: 2266DC775D: from=<ubuntu@webserver.DOMAIN-NAME.com>, size=425, nrcpt=1 (queue active)
May 1 02:26:10 webserver postfix/smtp[6138]: 2266DC775D: to=<alex123@gmail.com>, relay=aspmx.l.google.com[209.85.201.26]:25, delay=625, delays=624/0.01/0.09/0.18, dsn=2.0.0, status=sent (250 2.0.0 OK 1493605570 p15si12740899qta.122 - gsmtp)
May 1 02:26:10 webserver postfix/qmgr[6102]: 2266DC775D: removed
Amazon Lightsail - это недорогое облачное VPS-решение для разработчиков веб-приложений. Все на Документация Lightsail относится к выбору и настройке веб-серверов и платформ CMS. Четко не указано, но в остальном очевидно, что Lightsail не является почтовым сервером. Даже само имя вашего сервера webserver
!
Веб-приложение может время от времени отправлять электронные письма. Поэтому SMTP-порт 25 не заблокирован полностью, но имеет ограничения. Ваша конфигурация Postfix подходит для автономного SMTP-сервера, но mail.log
показывает, что происходит: после того, как вы достигли ограничения, время ожидания SMTP-соединений истекает, и почта получает deferred
, отложено на более позднюю попытку. В RFC 3463 исходя из Код состояния SMTP dsn=4.4.1
говорит то же самое:
4.4.1
Сервер получателя не отвечаетЭто ошибка вашего сервера, указывающая на то, что сервер получателя не отвечает. Ваш сервер автоматически повторит попытку несколько раз - сколько раз зависит от того, как ваш сервер был настроен.
Вы упомянули в комментарии, что это происходит только с Postfix в Ubuntu, но не с Sendmail в Amazon Linux. Я не так хорошо знаком с Amazon Linux и Amazon SES, но я предполагаю, что Amazon Linux Sendmail может иметь Amazon SES, предварительно настроенный как ретранслятор. Возможно интегрировать Amazon SES с Postfix, слишком.
Как у вас relayhost = $mydomain
, вы, вероятно, пытаетесь перенаправить всю почту на внешний почтовый сервер вашего домена, как и должно быть. Однако ограничение на порт 25
не имеет исключения для вашего внешнего MTA. Поэтому вам следует использовать агент отправки сообщений (порт 587
) вместо.
У вас должен быть настроен MSA на вашем почтовом сервере. Если это тоже Postfix, у вас должен быть /etc/postfix/master.cf
раздел, начинающийся с submission
раскомментированный:
submission inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
Настройте свой Lightsail relayhost
использовать порт отправки и аутентификацию, main.cf
:
relayhost = $mydomain:587
# Alternative example without DNS MX lookup:
# relayhost = [mail.example.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_use_tls = yes
smtp_tls_security_level = encrypt
smtp_tls_note_starttls_offer = yes
В /etc/postfix/sasl_passwd
это Berkeley DB (hash:
) для информации об имени пользователя и пароле, которые будут использоваться для аутентификации на сервере почтового шлюза. Примеры:
# destination credentials
[mail.example.com] username:password
# Alternative form:
# [mail.example.com]:submission username:password
Для получения более подробной информации см. Postfix SASL Howto.