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

Postfix отправляет электронные письма с задержкой

Я использую Ubuntu 16.04 на Amazon Lightsail. Я просто настраиваю Postfix для отправки писем.

Вопросы:

  1. Как исправить задержку, чтобы электронные письма отправлялись мгновенно?
  2. Как убедиться, что все электронные письма, отправленные пользователям (root и ubuntu) локальными приложениями, отправляются на исходящее письмо с тем же доменом?

Моя конфигурация:

/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) вместо.

  1. У вас должен быть настроен 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
    
  2. Настройте свой 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
    
  3. В /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.