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

Postfix не может получать внешнюю почту

Я пытаюсь настроить почтовый сервер для получения электронной почты, и я работаю с Postfix на экземпляре Ubuntu EC2 с эластичным IP-адресом, а обратный поиск DNS указывает на мой домен.

Я могу отправлять и получать электронную почту между локальными учетными записями, но не могу получать внешнюю электронную почту.

Я настроил свои записи MX и могу без проблем подключиться к порту 25 по telnet, хотя я все еще сомневаюсь, верны ли мои записи MX.



A   mail.example.in     123.123.3.11 (delete)       300         2010-10-12 03:37:24
A   example.in          123.123.3.11 (delete)       300         2010-10-11 04:34:53
MX  example.in          mail.example.in (delete)    300     10  2010-10-12 02:03:03
A   www.example.in      123.123.3.11 (delete)       300         2010-10-11 04:34:15
MX  www.example.in      mail.example.in (delete)    300     10  2010-10-12 02:12:51

netstat -nl дает мне

 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:3306             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     
tcp        0      0 0.0.0.0:2000               0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:80                 0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22                 0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:25                 0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:993                0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:995                0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                            :::*                          LISTEN     
tcp6       0      0 :::25                            :::*                          LISTEN     
udp        0      0.0.0.0:68                   0.0.0.0:*

Мой /etc/postfix/main.cf выглядит следующим образом


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-mail.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-mail.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.

myhostname = www.example.in
mydomain = example.in
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
mydestination = $myhostname,localhost.$mydomain, localhost, $mydomain
relayhost =
#mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mynetworks_style = host
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

local_recipient_maps =
virtual_alias_domains =  www.example.in

virtual_alias_maps = hash:/etc/postfix/virtual
inet_protocols = all
home_mailbox = Maildir/
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/dovecot-auth
smtpd_sasl_authenticated_header = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sender_restrictions = reject_unknown_sender_domain
mailbox_command = /usr/lib/dovecot/deliver -c /etc/dovecot/conf.d/01-dovecot-postfix.conf -n -m "${EXTENSION}"
smtp_use_tls = yes
smtpd_tls_received_header = yes
smtpd_tls_mandatory_protocols = SSLv3, TLSv1
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_auth_only = yes
tls_random_source = dev:/dev/urandom

Не видно журнала почты, фактически достигающей моего сервера, и нет подробностей в / var / log / syslog

Я уверен, что мне не хватает чего-то базового, и мне нужна помощь в настройке этого.

Я установил перехват всех идентификаторов в / etc / postfix / virtual, который работает для локальных писем. Я намереваюсь обрабатывать входящие письма с помощью рубина, но у меня возникли проблемы с его запуском.

Мои письма продолжают получать следующее сообщение

This is an automatically generated Delivery Status Notification

THIS IS A WARNING MESSAGE ONLY.

YOU DO NOT NEED TO RESEND YOUR MESSAGE.

Delivery to the following recipient has been delayed:

Message will be retried for 2 more day(s)

Technical details of temporary failure:
The recipient server did not accept our requests to connect. Learn more at http://mail.google.com/support/bin/answer.py?answer=7720
[mail.example.in. (10): Connection timed out]

заранее спасибо

Если вы можете получить доступ к серверу из-за пределов своей сети по IP-адресу, значит, с вашей записью MX что-то не так. Найдите в Google тестер открытого реле, введите свой IP-адрес и посмотрите, сможет ли он подключиться к серверу.

Тайм-аут подключения обычно вызван одной из двух причин: брандмауэр, поглощающий соединение (может быть на самом сервере или сетевом брандмауэре), или неправильный IP-адрес, указывающий на неиспользуемый адрес, где ничто не может отклонить соединение. Обратите внимание, что если вы только что изменили конфигурацию DNS, в зависимости от того, как долго ваши записи DNS сообщают всем о необходимости кэширования результатов поиска, они могут еще какое-то время использовать старую информацию.

Если IP работает извне вашей сети и прошло достаточно времени с тех пор, как вы настроили его, чтобы кеши DNS обновились, поэтому выяснить, что не так с вашей записью MX, будет непросто без реальной информации. Единственные правила для записи MX:
1) Запись MX должна содержать имя хоста (не IP) и
2) Имя хоста должно иметь запись A, содержащую его IP-адрес (не CNAME).
Большинство почтовых серверов идентифицируют полностью недопустимую запись MX и возвращают сообщение об этом.

Лучше всего использовать dig MX example.in который должен производить что-то вроде

;; ANSWER SECTION:
example.in.      6400    IN    MX   mail.example.in.

Затем, dig A mail.example.in должен сказать что-то вроде

;; ANSWER SECTION:
mail.example.in.   6400  IN    A    xxx.xxx.xxx.xxx

Единственное, что я могу придумать, это то, что в анонимном образце конфигурации DNS, который вы вставили, завершение "." отсутствует в именах хостов, но я не знаю, было ли это из-за вашего поиска и замены или из-за того, что эта вставка была получена из какого-то веб-редактора, который может скрывать от вас завершающие ".". В вставленном вами сообщении о недоставке используется mail.example.in. поэтому я подозреваю, что это просто скрыто.

Если IP не работает из-за пределов вашей сети тогда вам нужно будет проверить брандмауэр сервера (iptables в Linux), чтобы убедиться, что он не блокирует соединения. Если вы можете подключиться с другого компьютера в вашей сети, то порт либо заблокирован вашим сетевым брандмауэром / маршрутизатором, либо ваш интернет-провайдер блокирует SMTP.

Кроме того, убедитесь, что ваш эластичный IP-адрес правильно связан с вашим экземпляром. Согласно документам здесь, это выглядит довольно сложной операцией: http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1346

Вы говорите, что сомневаетесь в своих записях MX. Их непросто проверить, не зная домена, но попробуйте dig MX yourdomain.com чтобы увидеть, что произойдет. Если это не IP-адрес вашего сервера, проблема в этом.

Если вы знаете, что ваш MX правильный, следующее, что я бы попробовал, - это не просто подключиться к порту 25 по telnet, но и отправить почтовое сообщение с помощью telnet. Протокол SMTP довольно простителен для компьютерных фанатов, вводящих команды напрямую. RFC 821 содержит подробную информацию о протоколе; вы просто отправляете EHLO, затем сообщаете ему, кому вы отправляете почту, с какого адреса отправляете сообщение, а затем DATA, чтобы начать отправку текста; закрыть с. в отдельной строке, и он должен либо принять сообщение, либо выдать вам сообщение об ошибке.

Но я сам ставлю на записи MX.