У меня есть, по-видимому, часто возникающая, но нерешенная проблема с gmail при получении почты из внешних почтовых ящиков через gmail. Глядя на подробности ошибки, говорится:
сервер ответил: «Ошибка аутентификации».
Этот почтовый сервер является моим собственным сервером, и когда я подключаюсь с терминала с помощью:
~$ telnet mail.mydomain.com:995
Получаю следующее:
Trying xx.xx.xxx.xx...
Connected to mail.mydomain.com.
Escape character is '^]'.
а затем при попытке входа в систему:
user myuser
Connection closed by foreign host.
И в моем почтовом журнале:
Mar 26 18:22:42 www dovecot: auth: Debug: Loading modules from directory: /usr/lib/dovecot/modules/auth
Mar 26 18:22:42 www dovecot: auth: Debug: Module loaded: /usr/lib/dovecot/modules/auth/libdriver_mysql.so
Mar 26 18:22:42 www dovecot: auth: Debug: auth client connected (pid=6554)
Mar 26 18:23:20 www dovecot: pop3-login: Disconnected (no auth attempts): rip=xx.xx.xxx.xx, lip=xx.xx.xxx.xx, TLS handshaking: SSL_accept() failed: error:140760FC:SSL
routines:SSL23_GET_CLIENT_HELLO:unknown protocol
при тестировании ssl с помощью:
~$ openssl s_client -connect mail.mydomain.com:995
Я могу подключиться, но с этой строкой (я купил сертификат godaddy):
Verify return code: 19 (self signed certificate in certificate chain)
Что я делаю не так? Вот мои файлы конфигурации:
# 2.0.13: /etc/dovecot/dovecot.conf
# OS: Linux 3.0.0-13-server x86_64 Ubuntu 11.10 ext4
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:/home/vmail/%d/%n/Maildir
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date
namespace {
inbox = yes
location =
prefix = INBOX.
separator = .
type = private
}
passdb {
args = /etc/dovecot/dovecot-sql.conf
driver = sql
}
protocols = imap pop3
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
unix_listener auth-userdb {
group = vmail
mode = 0600
user = vmail
}
unix_listener auth-master {
mode = 0600
user = vmail
}
user = root
}
ssl = required
ssl_cert = </etc/ssl/certs/mail.mydomain.com_combined.crt
ssl_key = </etc/ssl/private/mail.mydomain.key
userdb {
args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes
driver = static
}
protocol lda {
auth_socket_path = /var/run/dovecot/auth-master
log_path = /home/vmail/dovecot-deliver.log
mail_plugins = sieve
postmaster_address = postmaster@mydomain.com
}
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
}
disable_plaintext_auth = no
auth_verbose = yes
auth_debug = yes
Постфикс:
# 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 = /usr/share/doc/postfix
# TLS parameters
smtpd_tls_cert_file = /etc/ssl/certs/mail.mydomain.com_combined.crt
smtpd_tls_key_file = /etc/ssl/private/mail.mydomain.com.key
smtpd_tls_security_level = may
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 = mail.mydomain.com
mydomain = mydomain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination =
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
html_directory = /usr/share/doc/postfix/html
message_size_limit = 30720000
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
# see under Spam smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
# Spam
disable_vrfy_command = yes
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks,
check_helo_access hash:/etc/postfix/helo_access,
reject_non_fqdn_hostname,
reject_invalid_hostname,
permit
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_invalid_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_non_fqdn_hostname,
reject_rbl_client sbl.spamhaus.org,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client bl.spamcop.net,
permit
smtpd_error_sleep_time = 1s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20
Ничего страшного. Все, что вы нам показали, согласуется с сервером POP / S (защищенным SSL), работающим на порту 995. Ваш openssl s_client
session, вероятно, жалуется, потому что у него нет правильного CA в его комплекте сертификатов.
Почему Google не может получать электронную почту с вашего сервера - это законный вопрос, но ничто из того, что вы опубликовали, не проливает света на эту ошибку. Если вы можете поймать Google в процессе получения почты с вашего сервера, и опубликовать те журналы dovecot, тогда мы могли бы начать проливать свет на проблему.
редактировать: Connection closed by foreign host
Это происходит потому, что, если вы лично не умеете бегло говорить по SSL и очень быстро вводить нечетные символы, вы не можете использовать telnet для подключения к службе, защищенной SSL (nb: это неверно для служб, защищенных TLS, но это не так). Ваша запись "user myuser", не являющаяся действительным подтверждением SSL, вызвала SSL23_GET_CLIENT_HELLO:unknown protocol
ошибка. Мне жаль, что это не "красиво", но все совершенно правильно.
Если бы вы пытались войти в систему из openssl s_client
session, вам, вероятно, повезло бы больше; предупреждение о самоподписанном сертификате является информационным, а не фатальным для сеанса.
Я думаю, что, возможно, эта ветка устарела, но я постараюсь внести свой вклад, кто-то другой может счесть ее полезной. Google очень своеобразен, когда дело доходит до подключения к почтовым серверам, если только почтовый сервер не использует подлинные сертификаты ssl, выпущенные признанным органом, например как "Starssl" и так далее, Google даже не будет разговаривать с вашим сервером.
У меня была аналогичная проблема несколько месяцев назад, когда я, наконец, использовал НЕ самоподписанный сертификат, я начал получать электронные письма от «Yahoo, Google и т. Д.» Так что это определенно связано с самоподписанным сертификатом или с плохо связанными сертификатами, если вы получите выдал сертификаты от признанного органа, но он все еще не работает, проверьте, что все правильно обработано. Обратите внимание на малейшие детали, которые могут испортить. Но первые виновники - СА. Удачи, и я надеюсь, что эта информация может помочь кому-то другому.