Я схожу с ума, настраивая POSTFIX + DOVECOT + Authenticated SMTP (SASL на данный момент). Учетные записи pop / imap подходят для получения почтового ящика, но я не могу войти в smtp с помощью sasl:
Вот:
[root@mail postfix]# telnet localhost smtp
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 localhost ESMTP
ehlo localhost
250-localhost
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN CRAM-MD5
250-AUTH=PLAIN LOGIN CRAM-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth plain aW5mby5jb20AaW5mby5jb20AcG9yY29kZGlv
535 5.7.8 Error: authentication failed:
Дайджест base64 используется следующим образом (домен и проходят разные от курса):
perl -MMIME::Base64 -e 'print encode_base64("info@foo.com\0info@foo.com\0mypass")'
Main.cf:
smtpd_banner = $myhostname ESMTP
biff = no
append_dot_mydomain = no
myhostname = localhost
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $myhostname
mynetworks = 127.0.0.0/8, 151.236.7.0/24
mailbox_size_limit = 0
home_mailbox = Maildir/
virtual_mailbox_domains = /etc/postfix/vhosts
virtual_mailbox_base = /home/vmail
virtual_mailbox_maps = hash:/etc/postfix/vmaps
virtual_minimum_uid = 1000
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
recipient_delimiter = +
inet_interfaces = all
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
Dovecot.conf:
auth_mechanisms = plain login cram-md5
auth_verbose = yes
auth_debug = yes
base_dir = /var/run/dovecot/
info_log_path = /var/log/dovecot.info
log_path = /var/log/dovecot
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:/home/vmail/%d/%n
passdb {
args = /etc/dovecot/passwd
driver = passwd-file
}
protocols = imap pop3
service auth {
executable = /usr/libexec/dovecot/auth
user = root
}
service imap-login {
chroot = login
executable = /usr/libexec/dovecot/imap-login
user = dovecot
}
service imap {
executable = /usr/libexec/dovecot/imap
}
service pop3-login {
chroot = login
executable = /usr/libexec/dovecot/pop3-login
user = dovecot
}
service pop3 {
executable = /usr/libexec/dovecot/pop3
}
ssl = no
userdb {
args = /etc/dovecot/users
driver = passwd-file
}
valid_chroot_dirs = /var/spool/vmail
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
}
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0600
user = postfix
group = postfix
}
}
Информация о системе:
CentOS release 6.5 (Final)
postfix-2.6.6-2.2.el6_1.x86_64
dovecot-2.0.9-7.el6.x86_64
Чего не хватает?
В вашем примере было дважды указано имя пользователя, что делает любую попытку входа в систему недействительной. Когда вы тестируете PLAIN auth, строка входа представляет собой закодированное в base64 имя пользователя и пароль, разделенные NULL, например:
perl -MMIME::Base64 -e 'print encode_base64("\000user\000password");'
AHVzZXIAcGFzc3dvcmQ=
Альтернативным тестированием является метод LOGIN.
perl -MMIME::Base64 -e 'print encode_base64("user")'
dXNlcg==
perl -MMIME::Base64 -e 'print encode_base64("password")'
cGFzc3dvcmQ=
Что следует проверить, как описано ниже, где S: - это сервер, а C: - ответ клиента.
openssl s_client -starttls smtp -connect localhost:25
C: EHLO localhost.localdomain
S: 250- Hello localhost [127.0.0.1], pleased to meet you
S: 250-AUTH LOGIN PLAIN
C: AUTH PLAIN
S: 334
C: AHVzZXIAcGFzc3dvcmQ=
S: 235 2.0.0 OK Authenticated
C: AUTH LOGIN
S: 334 VXNlcm5hbWU6
C: dXNlcg==
S: 334 UGFzc3dvcmQ6
C: cGFzc3dvcmQ=
S: 235 2.0.0 OK Authenticated