Я пытаюсь настроить почтовый сервер для получения электронной почты, и я работаю с 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.