1

Я запускаю postfix на Raspberry Pi за домашним маршрутизатором с настроенным динамическим DNS. Postfix может отправлять электронную почту просто отлично, но, похоже, не получает.

Я думаю, что домашний маршрутизатор и динамический DNS в порядке, я размещаю веб-сайт на Raspberry Pi, он отлично работает и общедоступен. Так что либо моя запись MX не настроена должным образом, либо постфикс не (я думаю).

(Я отредактировал свое имя хоста ниже).

Конфигурация динамического DNS для myhostname.ddns.net

  • IPv4-адрес: IP-адрес моего Raspberry Pi
  • Запись MX: myhostname.ddns.net, Приоритет 1

Настройка перенаправления портов на домашнем маршрутизаторе

D   Service Port    Internal Port   IP Address  Protocol
1   80      80      192.168.0.10    ALL     # web server
2   22      22      192.168.0.10    ALL     # ssh
3   25      25      192.168.0.10    TCP     # mail server

на 3-м компьютере не Raspberry Pi

  • ping myhostname.ddns.net: работает, я вижу, что IP-адрес моего Raspberry Pi отвечает.
  • указывая браузер на http://myhostname.ddns.net: работает, я вижу корень сайта. Это подтверждает, что динамический DNS работает и переадресация домашнего маршрутизатора работает.
  • в учетной записи gmail отправка почты по pi@myhostname.ddns.net завершается неудачно примерно через 24 часа с сообщением «доставка не завершена, сервер-получатель не принял наши запросы на подключение. время ожидания». Если вы знаете более быстрый способ тестирования, который не требует ожидания 24 часа, пожалуйста, дайте мне знать.

на Raspberry Pi, вошли как "пи"

$ mail
No mail for pi

$ dig myhostname.ddns.net MX +short
1 myhostname.ddns.net

$ sudo postfix status
postfix/postfix-script: the Postfix mail system is running: PID: 16232

$ sudo netstat -plutn | grep 25
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      16232/master

$ sudo iptables -L -n -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination

$ cat /etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Raspbian)
biff = no
append_dot_mydomain = no
readme_directory = no
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_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_recipient_restrictions =
    permit_sasl_authenticated,
    permit_mynetworks,
    reject_unauth_destination
smtpd_relay_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    defer_unauth_destination
myhostname = myhostname.ddns.net
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = myhostname.ddns.net, myhostname, localhost.localdomain, 
localhost
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
home_mailbox = Maildir/
mailbox_command =
relayhost = [smtp.gmail.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/postfix/cacert.pem
smtp_use_tls = yes

$ cat /etc/mailname
myhostname.ddns.net

Обновить

Comcast блокирует порт 25, см. Https://www.xfinity.com/support/articles/email-port-25-no-longer-supported.

2 ответа2

1

Здесь есть несколько вещей, которые вы должны проверить.

  1. Я думаю, Google не может отправить вам электронное письмо, потому что у вас нет записи MX. Но давайте притворимся, что это не проблема на мгновение, и давайте решать проблемы другими проблемами. (Нет, DDNS не даст вам MX по многим причинам)

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

    nc -vv myhostname.ddns.net 25

или же

telnet myhostname.ddns.net 25

Это должно показать, разрешено ли вам подключаться к порту 25 - учтите, что некоторые интернет-провайдеры могут блокировать входящие подключения к порту 25. Конечно, вам нужно проверить свой внутренний брандмауэр на своем пи (какой дистрибутив Linux вы запускаете?)

  1. Как только вы подключитесь к вашему серверу, вы сможете отправить электронное письмо, используя telnet/nc.

    EHLO myhostname.ddns.net

(Вы должны получить несколько строк, начинающихся с 250)

mail from: your@myhostname.ddns.net
rcpt to: email@to_send_it_to.com
subject: Test email

и затем начните печатать свою электронную почту. Конец с одним "." в последней строке вот так:

Test email from my server.
.

Затем вы должны увидеть, что электронное письмо было отправлено или хотя бы принято. Не нужно ждать 24 часа :)

  1. Я действительно сомневаюсь, что вы сможете использовать свой почтовый сервер Pi для всего, кроме нескольких тестов. Для начала у вас нет записей MX и нет контроля над DKIM, PTR и SPF ... Другими словами, он не будет готов к производству, и люди не будут принимать электронные письма с вашего сервера. А тот факт, что вы используете динамический IP, означает, что ваш IP заблокирован 99% фильтрами спама. да, просто потому что это не статично.
0

Как говорит Comcast на портах, заблокированных в сети Comcast, вы можете использовать порт 587.

Изменить: ComCast также заявил -> Если вы используете почтовый сервер, пожалуйста, свяжитесь с Comcast Customer Security Assurance по телефону 1-877-807-6580 для получения дополнительной информации об этом блоке.

Смотрите: Как настроить шифрование TLS в Postfix

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .