я использовал это руководство чтобы настроить мой почтовый сервер, и все работает безупречно, за исключением того, что, похоже, нет аутентификации smtp. Понятия не имею, что происходит, поскольку в mail.log или mail.err нет ничего, что бы указывало на что-либо. Надеюсь, здесь есть кто-то, кто может мне помочь.
Вот что происходит, когда я запускаю команду telnet (я поменял местами домен и адрес электронной почты).
telnet pro.domain.org 25
Trying 50.576.3.15...
Connected to mail.domain.org.
Escape character is '^]'.
220 pro.domain.org ESMTP Postfix (Ubuntu)
ehlo example.com
250-pro.domain.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from: <chris@gmail.com>
250 2.1.0 Ok
rcpt to: <chris@domain.org>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
asd
.
250 2.0.0 Ok: queued as 7C0F8D620
quit
221 2.0.0 Bye
Connection closed by foreign host.
Вот вывод postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
always_bcc = chris@domain.org
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
content_filter = smtp-amavis:[127.0.0.1]:10024
inet_interfaces = all
mailbox_size_limit = 0
mydestination = localhost
myhostname = pro.domain.org
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost =
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/ssl/certs/dovecot.pem
smtpd_tls_key_file = /etc/ssl/private/dovecot.pem
smtpd_use_tls = yes
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_transport = lmtp:unix:private/dovecot-lmtp
Вот результат postconf -a
cyrus
dovecot
Вот вывод dovecot -n
# 2.0.19: /etc/dovecot/dovecot.conf
# OS: Linux 3.9.2-x86_64-linode32 x86_64 Ubuntu 12.04.2 LTS ext3
auth_mechanisms = plain login
mail_location = maildir:/var/mail/vhosts/%d/%n
mail_privileged_group = mail
passdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
protocols = imap pop3 lmtp
service auth-worker {
user = vmail
}
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0666
user = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
}
user = dovecot
}
service imap-login {
inet_listener imap {
port = 0
}
}
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
}
service pop3-login {
inet_listener pop3 {
port = 0
}
}
ssl = required
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.pem
userdb {
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
driver = static
}
Похоже, что dovecot действительно создает сокет
ls -la /var/spool/postfix/private/auth
srw-rw-rw- 1 postfix postfix 0 May 22 23:10 /var/spool/postfix/private/auth
Есть идеи, что делать сейчас?
Взглянув на конфигурацию вашей голубятни, у вас есть:
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0666
user = postfix
Согласно документации на постфикс, у вас должен быть прослушивающий сокет, а не unix_listener - если вы используете unix_listener, у вас также должен быть сокет TCP. Итак, ваш dovecot.conf должен вместо этого содержать следующее:
socket listen {
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
После этого перезапустите dovecot и postfix. Если это по-прежнему не работает, проверьте свои журналы постфиксов (обычно /var/log/mail.log) и опубликуйте любую информацию оттуда в качестве редактирования в исходном вопросе.
Вы отправляете электронное письмо на адрес получателя, указанный в $ mydomain, и вы настроили почтовый сервер так, чтобы он всегда принимал эти письма.
Чтобы проверить аутентификацию, вам необходимо подключиться из сети, которая не указана в $ mynetwork, и отправить письмо получателю, который не указан как разрешенный домен получателя.
(Если бы вы действительно выполняли тест правильно, было бы намного проще выяснить, если бы вы не изменили половину информации, которую делаете.)
Ваша конфигурация использует smtpd_tls_auth_only = yes
, что и должно быть, так как это запрещает отправку паролей в открытом виде. Однако это означает, что AUTH
доступен только по зашифрованным каналам. Вы должны протестировать
openssl s_client -connect smtp.example.com:25 -starttls smtp -CApath /etc/ssl/certs/