Когда я подключаюсь к своему серверу через Telnet и пытаюсь отправить электронное письмо:
MAIL FROM:<someuser@mydomain.com>
#=> 250 2.1.0 Ok
RCPT TO:<me@gmail.com>
#=> 554 5.7.1 <me@gmail.com>: Relay access denied
Я не мог найти ответ на сайте или глядя на вопросы / ответы других пользователей, я не уверен, с чего начать. Идеи?
Обновить
Итак, в основном глядя на документы: http://www.postfix.org/SMTPD_ACCESS_README.html (раздел: Выборочная работа со списками ограничений доступа SMTP), Похоже, у меня нет ни одной из этих директив в etc/postfix/main.cf
лайк smtpd_client_restrictions = permit_mynetworks, reject
или любой другой, так что я очень запутался.
Но на самом деле я собираюсь подключить приложение rails к серверу и отправлять электронные письма, поэтому я не уверен, как с этим справиться.
Вот как выглядит мой конфигурационный файл:
# 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.
myhostname = rerecipe-utils
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, localhost.$mydomain, localhost, mail.rerecipe.com, rerecipe.com
relayhost =
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
mynetworks = 127.0.0.0/8 204.232.207.0/24 10.177.64.0/19 [::1]/128 [fe80::%eth0]/64 [fe80::%eth1]/64
Следует отметить, что relayhost
пусто, это файл конфигурации по умолчанию, который был создан, когда я установил Postfix, при тестировании соединения с openssl
Я получаю это:
~% openssl s_client -connect mail.myhostname.com:25 -starttls smtp
CONNECTED(00000003)
depth=0 /CN=myhostname
verify error:num=18:self signed certificate
verify return:1
depth=0 /CN=myhostname
verify return:1
---
Certificate chain
0 s:/CN=myhostname
i:/CN=myhostname
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIBqTCCARICCQDDxVr+420qvjANBgkqhkiG9w0BAQUFADAZMRcwFQYDVQQDEw5y
ZXJlY2lwZS11dGlsczAeFw0xMDEwMTMwNjU1MTVaFw0yMDEwMTAwNjU1MTVaMBkx
FzAVBgNVBAMTDnJlcmVjaXBlLXV0aWxzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
iQKBgQDODh2w4A1k0qiPNPhkrPj8sfkxpKPTk28AuZhgOEBYBLeHacTKNH0jXxPv
P3TyhINijvvdDPzyuPJoTTliR2EHR/nL4DLhr5FzhV+PB4PsIFUER7arx+1sMjz6
5l/Ubu1ppMzW9U0IFNbaPm2AiiGBQRCQN8L0bLUjzVzwoSRMOQIDAQABMA0GCSqG
SIb3DQEBBQUAA4GBALi2vvk9TGKJubXYJbU0PKmVmsfzFK35yLqr0keiDBhK2Leg
274sWxEH3ds8mUaRftuFlXb7RYAGNlVyTuMTY3CEcnqIsH7F2McCUTpjMzu/o1mZ
O/B21CelKetBd1u79Gkrv2vWyN7Csft6uTx5NIGG2+pGi3r0gX2r0Hbu2K94
-----END CERTIFICATE-----
subject=/CN=myhostname
issuer=/CN=myhostname
---
No client certificate CA names sent
---
SSL handshake has read 1203 bytes and written 360 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : DHE-RSA-AES256-SHA
Session-ID: 1AA4B8BFAAA85DA9ED4755194C50311670E57C35B8C51F9C2749936DA11918E4
Session-ID-ctx:
Master-Key: 9B432F1DE9F3580DCC6208C76F96631DC5A4BC517BDBADD5F514414DCF34AC526C30687B96C5C4742E9583555A118232
Key-Arg : None
Start Time: 1292985376
Timeout : 300 (sec)
Verify return code: 18 (self signed certificate)
---
250 DSN
Как ни странно, когда я пытаюсь отправить электронное письмо с самого устройства, оно делает работай:
echo test | mail -s "test subject" me@gmail.com
Обычно, когда вы видите этот тип отказа, это связано с тем, что предоставлено для доступа к ретрансляции, то есть что разрешено отправлять / ретранслировать? Вы только что настроили этот сервер, он был на месте? Откуда вы пытаетесь отправить? Подробности, пожалуйста.
Я не мог найти ответ на сайте или глядя на вопросы / ответы других пользователей, я не уверен, с чего начать. Идеи?
Google по запросу "ретранслятор постфикса" и нажмите первый результат. Если у вас есть конкретные вопросы по документации - или если вы что-то пробовали и не думаете, что это работает так, как описано, - дайте нам знать, и мы будем рады помочь.
обычно, по умолчанию с постфиксом, чтобы он мог передать ваше сообщение, вы либо должны прийти откуда-то изнутри mynetworks
или ваш адрес электронной почты отправителя должен быть в mydestination
. Конечно, это значение по умолчанию, и его можно изменить, обычно через smtpd_client_restrictions
. В вашем примере отправитель someuser@mydomain.com
, которое, скорее всего, не является вашим доменным именем. В вашем файле конфигурации не указан mydomain, $ mydomain будет инициализирован с сервера hostnames domain. Итак, поскольку вы не из моих сетей и не в моем месте назначения, ваша почта не инициируется и не заканчивается на этом сервере postfix, следовательно, это ретранслятор, и это запрещено.
С другой стороны, когда вы заходите с самой машины, 127.0.0.1, вы находитесь в моих сетях и, следовательно, без проблем передаются.
На самом деле, как заметил ларск, постфиксная ретрансляция почты - это гораздо больше, чем просто пара «волшебных» конфигурационных директив. Вам следует ознакомиться с обширной онлайн-документацией postfix.