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

Postfix + Dovecot + AWS + CloudFlare + SquirrelMail Невозможно получать сообщения

Настроил эту штуку некоторое время назад, и она отправляет сообщения. Прекрасно, однако я хотел, чтобы начать получать сообщения.

Ив попытался подключиться к порту 25 по Telnet, но ничего.

копать dzwxgames.com mx:

dzwxgames.com.          60      IN      MX      10 34.210.135.57.

Теперь AWS требует использования ретрансляции SES для отправки сообщений, которая работает нормально. Но когда я пытаюсь их получить, действует так, как будто все порты заблокированы.

netstat -lntu

tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN
tcp6       0      0 :::25                   :::*                    LISTEN
tcp6       0      0 :::443                  :::*                    LISTEN
tcp6       0      0 :::110                  :::*                    LISTEN
tcp6       0      0 :::143                  :::*                    LISTEN

Но netstat сообщает, что их тоже слушают.

Итак, я проверил свои правила группы безопасности на консоли AWS:

SMTP TCP 25 0.0.0.0/0
SMTPS TCP 465 0.0.0.0/0
POP3 TCP 110 0.0.0.0/0

Вроде нормально. Хорошо ... возможно, Postfix не работает?

постфикс -n

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
home_mailbox = Maildir/
inet_interfaces = all
inet_protocols = all
mailbox_size_limit = 0
mydestination = $myhostname, dzwxgames.com, localhost, localhost.localdomain, localhost
myhostname = DZWXGamesWeb.dzwxgames.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost = [email-smtp.us-west-2.amazonaws.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_note_starttls_offer = yes
smtp_tls_security_level = encrypt
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes

Хорошо ... Значит, postfix доступен только на localhost?

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

Я немного погуглил, и он говорит, что, возможно, нужно включить dovecot?

Хорошо, поэтому добавил это в главную конфигурацию postfix

/etc/postfix/master.cf:

ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix  -       n       n       -       2       pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman   unix  -       n       n       -       -       pipe
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${user}
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=mail:mail argv=/usr/lib/dovecot/deliver
  -f ${sender} -d ${recipient}

Хорошо еще ничего. Может быть, dovecot не слушает правильные порты?

# 2.2.22 (fe789d2): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.13 (7b14904)
doveconf: Warning: NOTE: You can get a new clean config file with: doveconf -n > dovecot-new.conf
doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:103: 'imaps' protocol is no longer necessary, remove it
doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:103: 'pop3s' protocol is no longer necessary, remove it
# OS: Linux 4.4.0-45-generic x86_64 Ubuntu 16.04.5 LTS ext3
mail_location = maildir:/home/%u/Maildir
namespace inbox {
  inbox = yes
  location =
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix =
}
passdb {
  driver = pam
}
protocols = pop3 imap
service imap-login {
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}
service imap {
  process_limit = 1024
}
service pop3-login {
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}
service pop3 {
  process_limit = 1024
}
ssl = no
userdb {
  driver = passwd
}

Да я этого не понимаю. Учебник, который я использовал для настройки, кажется, давно ушел. И еще остается много вопросов.

  1. Где я ошибся в этой конфигурации?
  2. Как мне это исправить?
  3. Если я использую Cloudflare для маскировки IP-адресов серверов, нарушит ли это мои записи MX?
  4. Почему мой netstat показывает, что порт 25 тоже прослушивается, но я не могу с ним разговаривать?

Я знаю, что amazon блокирует много сообщений с порта 25, но, похоже, нет никакой информации, говорящей о том, что они блокируют связь с этим портом. Я также уже установил лимиты на отправку.

И журналы даже не сообщают, что получили сообщение.

НАКОНЕЦ разобрался.

Это полный контрольный список: убедитесь, что Postfix / dovecot / squrrelmail / mailbox настроен. Как только это произойдет, вы должны увидеть. ПРИМЕЧАНИЕ. Это только получение писем. Отправка - это еще один ад.

sudo netstat -plnt
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      1612/master

Вы должны видеть 0.0.0.0, а не 127.0.0.1 или 192.0.0. доб.

Убедитесь, что группа безопасности на вашем Amazon включает порт 25. и порты ssl / tls.

Следующая проверка /etc/postfix/master.cf содержит:

smtp       inet  n       -       n       -       -       smtpd

Если это не личное, то оно находится в инете и не привязано к корневому каталогу. Не знаю почему. Иногда помогает. Просто убедитесь, что у вас есть соответствующие разрешения для ваших папок.

Затем убедитесь, что ваш ufc разрешает подключение к 25.

sudo ufw status
25/tcp                     ALLOW       Anywhere

если не:

sudo ufw allow 25/tcp

ДАЖЕ, если netstat показывает, что 25 тоже прослушивается, это может быть заблокировано брандмауэром.

НАКОНЕЦ убедитесь, что у вас есть ACCEPT в iptables.

sudo iptables -I INPUT -p tcp -m tcp --dport 25 -j ACCEPT

Теперь выполните тест ВНЕШНЕГО порта: https://www.yougetsignal.com/tools/open-ports/

Большинство интернет-провайдеров блокируют связь через порт из дома на порт 25. Период. Все это. Возможно, вы даже не сможете проверить связь с сервером. Да, это плохо.

Если все сказано и сделано, все будет хорошо. Проверьте свои почтовые журналы.

sudo tail -f /var/log/mail.log

Apr 26 07:43:05 DZWXGamesWeb postfix/qmgr[6257]: 87EEE400EC: from=<deathmock@gmail.com>, size=3266, nrcpt=1 (queue active)
Apr 26 07:43:05 DZWXGamesWeb postfix/local[27250]: 87EEE400EC: to=<deem@dzwxgames.com>, relay=local, delay=0.37, delays=0.36/0/0/0, dsn=2.0.0, status=sent (delivered to maildir)

Показывает правильно направленное письмо. Если есть проблемы, проверьте /var/log/mail.err

Разрешает ли ваша политика безопасности внешние подключения к порту 25? Это могло быть проблемой.

Можете ли вы установить telnet на 127.0.0.1 25 на машине?