Я использую Dovecot, чтобы получить доступ Imap к моему почтовому серверу (на Raspbian). Я использую системных пользователей и могу успешно протестировать логины (doveadm auth test ...
). Но я не могу получить опцию аутентификации через telnet:
sudo telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 mail.mydomain.org ESMTP Postfix
sudo telnet localhost 143
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
Я скучаю по [AUTH=PLAIN]
статус, который упоминается в вики. Я не получаю ошибок в статусе systemctl. Не знаю, что еще попробовать! Вы можете мне помочь?
Спасибо!!
Конфигурация моей голубятни dovecot -n
# 2.2.27 (c0f36b0): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.16 (fed8554)
# OS: Linux 4.19.42-v7+ armv7l Debian 9.9
auth_debug_passwords = yes
auth_mechanisms = plain login
auth_username_format = %Ln
auth_verbose = yes
auth_verbose_passwords = yes
debug_log_path = /etc/dovecot/log/debug.txt
info_log_path = /etc/dovecot/log/info.txt
mail_debug = yes
mail_location = mbox:~/mail:INBOX=/var/mail/%u
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 index ihave duplicate mime foreverypart extracttext
passdb {
driver = shadow
}
plugin {
sieve = file:~/sieve;active=~/.dovecot.sieve
}
protocols = imap lmtp sieve
service auth-worker {
name = auth-worker
}
service {
unix_listener {
group = postfix
mode = 0660
user = postfix
path = /var/spool/postfix/private/auth
}
name = auth
}
service {
inet_listener {
port = 143
name = imap
}
inet_listener {
port = 993
ssl = yes
name = imaps
}
name = imap-login
}
service {
unix_listener {
group = postfix
mode = 0600
user = postfix
path = /var/spool/postfix/private/dovecot-lmtp
}
name = lmtp
}
ssl_cert = /etc/letsencrypt/live/mail.mydomain.org/cert.pem
ssl_key = # hidden, use -P to show it
userdb {
driver = passwd
}
verbose_ssl = yes
protocol lmtp {
mail_plugins = quota sieve
postmaster_address = pi@mydomain.org
}
protocol lda {
...
}
protocol imap {
...
}
protocol sieve {
...
}
Мой постфикс /etc/postfix/main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
myhostname = mail.mydomain.org
mydomain = mydomain.org
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8
#relay_domains =
#home_mailbox = Maildir/
inet_protocols = ipv4, ipv6
# TLS
smtpd_use_tls=yes
smtpd_tls_auth_only = yes
smtp_tls_security_level = yes
smtpd_tls_security_level = may
smtpd_tls_cert_file=/etc/letsencrypt/live/mail.mydomain.org/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.mydomain.org/privkey.pem
# Authentication
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous
smtpd_sasl_local_domain = $mydomain
# when mail location = maildir:~/.maildir
mailbox_transport = lmtp:unix:private/dovecot-lmtp
# Virtual user scenario
virtual_transport = lmtp:unix:private/dovecot-lmtp
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
readme_directory = no
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2
Мой постфикс /etc/postfix/master.cf
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (no) (never) (100)
# ==========================================================================
smtp inet n - y - - smtpd
#smtp inet n - y - 1 postscreen
#smtpd pass - - y - - smtpd
#dnsblog unix - - y - 0 dnsblog
#tlsproxy unix - - y - 0 tlsproxy
submission inet n - y - - smtpd
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_sasl_local_domain=$myhostname
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
-o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
Netstat sudo netstat -tulpn | grep LISTEN
:
tcp 0 0 0.0.0.0:4190 0.0.0.0:* LISTEN 7055/dovecot
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 7055/dovecot
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 6999/master
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 7055/dovecot
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 6999/master
tcp6 0 0 :::443 :::* LISTEN 657/apache2
tcp6 0 0 :::4190 :::* LISTEN 7055/dovecot
tcp6 0 0 :::993 :::* LISTEN 7055/dovecot
tcp6 0 0 :::587 :::* LISTEN 6999/master
tcp6 0 0 :::143 :::* LISTEN 7055/dovecot
tcp6 0 0 :::80 :::* LISTEN 657/apache2
tcp6 0 0 :::25 :::* LISTEN 6999/master
РЕДАКТИРОВАТЬ 1: Я получил эту ошибку для команды openssl s_client -connect localhost:imaps
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 198 bytes
Verification: OK
---
Но оказывается, что я забыл <
прямо перед ssl_cert
и ssl_key
дорожка.
Работает так, как задумано.
В этом и состоит цель smtpd_sasl_security_options=noplaintext
в постфиксе и disable_plaintext_auth=yes
в голубятне. Эти параметры предотвращают (предлагают) аутентификацию по незащищенным каналам. Вы можете убедиться, что ваш сервер предлагает аутентификацию через защищенные каналы, запустив безопасное SMTP-соединение:
$ (echo EHLO localhost; sleep 1) | openssl s_client -starttls smtp -connect localhost:submission
..
220 example.com ESMTP Postfix
..
250-AUTH PLAIN LOGIN
То же самое для безопасного соединения IMAP:
$ sleep 1 | openssl s_client -connect localhost:imaps
..
* OK [CAPABILITY IMAP4rev1 .. AUTH=PLAIN AUTH=LOGIN]
Нет абсолютно ничего плохого в отключении аутентификации по открытому тексту. Просто настройте все свои почтовые клиенты для доступа к почте через TLS. Возможно, вы даже захотите отключить IMAP с открытым текстом, чтобы избежать ошибок.