Installation Dovecot
Hier wird die Basis-Installation von Dovecot beschrieben. Falls du von Cyrus zu Dovecot migrieren möchtest, findest du hier die entsprechende Anleitung.
- Installation
- Konfiguration
- Starten
- Dovecot Administrieren
- Testen
- Fehlermeldungen
- pw: user 'dovecot' disappeared during update
- doveconf: Error: t_readlink(/var/run/dovecot/dovecot.conf) failed: readlink() failed: No such file or directory
- error:140790E5:SSL routines:ssl23_write:ssl handshake failure:s23_lib.c:177
- COMPRESS=DEFLATE wird nicht angezeigt
- dovecot: master: Warning: service(imap-login): process_limit (100) reached, client connections are being dropped
Installation
Dovecot
Aktuell gibt es unter FreeBSD noch keinen dovecot-mysql Port, weshalb ich den Port selber Builde:
cd /usr/ports/mail/dovecot
make install clean
Hier MySQL für den Datenbank Support auswählen:
┌───────────────────────────── dovecot-2.3.2.1 ────────────────────────────────┐ │ ┌──────────────────────────────────────────────────────────────────────────┐ │ │ │+[x] DOCS Build and/or install documentation │ │ │ │+[x] EXAMPLES Build and/or install examples │ │ │ │+[x] LIBWRAP TCP wrapper support │ │ │ │+[ ] LUA Lua scripting language support │ │ │ │+[ ] LZ4 LZ4 compression support │ │ │ │+[ ] VPOPMAIL vpopmail support │ │ │ │───────────────────────────── Database support ───────────────────────────│ │ │ │+[ ] CDB CDB database support │ │ │ │+[ ] LDAP LDAP protocol support │ │ │ │ [x] MYSQL MySQL database support │ │ │ │+[ ] PGSQL PostgreSQL database support │ │ │ │+[ ] SQLITE SQLite database support │ │ │ │───────────────────────── Full text search plugins ───────────────────────│ │ │ │+[ ] ICU Use libicu for FTS unicode normalization │ │ │ │+[ ] LUCENE CLucene FTS support │ │ │ │+[ ] SOLR Solr FTS support │ │ │ │+[ ] TEXTCAT Libtextcat FTS support │ │ │ │─────────────────────── GSSAPI Security API support ──────────────────────│ │ │ │+(*) GSSAPI_NONE Build without GSSAPI support │ │ │ │+( ) GSSAPI_BASE Use GSSAPI from base │ │ │ │+( ) GSSAPI_HEIMDAL Use Heimdal GSSAPI from security/heimdal │ │ │ │+( ) GSSAPI_MIT Use MIT GSSAPI from security/krb5 │ │ │ └──────────────────────────────────────────────────────────────────────────┘ │ ├──────────────────────────────────────────────────────────────────────────────┤
Jetzt noch locken, damit es beim nächsten pkg upgrade nicht mit dem vorkompilierten Port überschrieben wird:
pkg lock dovecot
Sieve Plugin
Wegen den Abhängigkeiten muss auch dieser Port manuell gebuildet werden, ansonsten würde Dovecot in zwei Versionen doppelt installiert werden (da ich es vorher ja gelockt habe)
Also das Sieve Plugin mit Managesieve Support installieren:
cd /usr/ports/mail/dovecot-pigeonhole
make install clean
pkg lock dovecot-pigeonhole
Konfiguration
Das Verzeichnis der Config Files: /usr/local/etc/dovecot
Verzeichnisse erstellen
Ich möchte, dass die Mails im Verzeichnis
/mail/dovecot/USERNAME/Maildir
gespeichert werden. Also mal alle Verzeichnisse erstellen:
mkdir -p /mail/dovecot
adduser vmail
Als erstes den vmail User hinzufügen für die Nutzung einer Single UID und GID für alle User. (Kann bei Bedarf per userdb überschrieben werden)
adduser vmail
Username: vmail
Full name: Dovecot Virtual User
Uid (Leave empty for default):
Login group [vmail]:
Login group is vmail. Invite vmail into other groups? []:
Login class [default]:
Shell (sh csh tcsh bash rbash git-shell nologin) [sh]: nologin
Home directory [/home/vmail]: /mail/dovecot
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]: no
Lock out the account after creation? [no]:
Berechtigungen setzen
chown -R vmail:vmail /mail/dovecot
chmod 0750 /mail/dovecot
Dovecot Konfiguration
Konfigfiles kopieren:
cp -R /usr/local/etc/dovecot/example-config/* /usr/local/etc/dovecot
dovecot.conf
vi /usr/local/etc/dovecot/dovecot.conf
Sieve bei den Protokollen hinzufügen
# Protocols we want to be serving.
#protocols = imap pop3 lmtp submission
protocols = imap pop3 lmtp sieve
dovecot-sql.conf.ext
vi /usr/local/etc/dovecot/dovecot-sql.conf.ext
Verfügbare Variabeln:
%u
: Kompletter Username (user@domain).%n
: Username ohne Domain Part.%d
: Domain Part.%h
: User Home Verzeichnis (bevorzugt sollte man jedoch ~/ verwenden)
Diese Einstellungen sind wieder an die Ursprüngliche Cyrus Config angelehnt:
driver = mysql
#
connect = host=sql.example.com dbname=virtual user=virtual password=blarg
#
default_pass_scheme = PLAIN
#
password_query = SELECT CONCAT(username, '@', domain) AS user, password FROM mail_entries WHERE ( username = '%Lu' OR ( username = '%Ln' AND domain = '%Ld' ) ) AND is_active = 1 AND is_mainaccount = 1
#user_query =
# SELECT home, uid, gid
# FROM users WHERE username = '%n' AND domain = '%d'
Beachte: Ich habe hier die user_query deaktiviert, da ich diese Infos nicht pro User abfrage, sondern im Config global übergebe (Single UID/GID Setup). Somit kann man sich diese Abfrage sparen.
Falls man home/maildir/uid auch für jeden User abfagen möchte, kann man die Query so gestalten:
password_query = SELECT CONCAT(username, '@', domain) AS user, password, home AS userdb_home, CONCAT('maildir:', home) AS userdb_mail, uid AS userdb_uid, gid AS userdb_gid FROM mail_entries WHERE ( username = '%Lu' OR ( username = '%Ln' AND domain = '%Ld' )
) AND is_active = 1 AND is_mainaccount = 1
conf.d/10-mail.conf
Hier Maillocation und Home Dir anpassen. Ich möchte dieselbe Verzeichnisstruktur, wie ich vorher bei Cyrus hatte. Also mit LAYOUT=fs
vi /usr/local/etc/dovecot/conf.d/10-mail.conf
mail_home = /mail/dovecot/%n
mail_location = maildir:~/Maildir:LAYOUT=fs
namespace inbox {
separator = .
prefix = INBOX.
inbox = yes
}
mail_uid = vmail
mail_gid = vmail
conf.d/10-master.conf
vi /usr/local/etc/dovecot/conf.d/10-master.conf
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
}
conf.d/10-auth.conf
hier auth-sql.conf.ext
aktivieren und allen anderen Includes deaktivieren:
vi /usr/local/etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = login plain cram-md5 digest-md5
#
#!include auth-system.conf.ext
!include auth-sql.conf.ext
conf.d/auth-sql.conf.ext
Jetzt noch userdb abschalten:
vi /usr/local/etc/dovecot/conf.d/auth-sql.conf.ext
userdb driver=sql
abschalten. Static brauchen wir auch nicht zu aktivieren, da wir im 10.-mail.conf
die globalen Settings (mail_uid/mail_gid) bereits eingetragen haben.:
# Authentication for SQL users. Included from 10-auth.conf.
#
# <doc/wiki/AuthDatabase.SQL.txt>
passdb {
driver = sql
# Path for SQL configuration file, see example-config/dovecot-sql.conf.ext
args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
}
# "prefetch" user database means that the passdb already provided the
# needed information and there's no need to do a separate userdb lookup.
# <doc/wiki/UserDatabase.Prefetch.txt>
#userdb {
# driver = prefetch
#}
#userdb {
# driver = sql
# args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
#}
# If you don't have any user-specific settings, you can avoid the user_query
# by using userdb static instead of userdb sql, for example:
# <doc/wiki/UserDatabase.Static.txt>
#userdb {
# driver = static
# args = uid=vmail gid=vmail home=/var/vmail/%u
#}
conf.d/10-ssl.conf
SSL Zertifikat erstellen
Dafür nehme ich ein bestehendes SSL Zertifikat -> wie du ein Zertifikat mit Certbot erstellen kannst, ist hier beschrieben:
Let’s Encrypt SSL Zertifikate mit Certbot erstellen
DH Parameters
Ab Dovecot Version 2.3 ist die Angabe von DH Parametern zwingend. Falls für den Server diese noch nicht generiert wurden (achtung: dauert SEHR! lange), müsste dies noch gemacht werden. Wenn man möchte, kann man alternativ auch 2048 generieren – das geht etwas schneller.
openssl dhparam -out /etc/ssl/dhparams_4096.pem 4096
Danach die Config anpassen:
vi /usr/local/etc/dovecot/conf.d/10-ssl.conf
Folgendes anpassen:
ssl = yes
ssl_cert = </global/configs/letsencrypt_data/live/mail.meinmailserver.com/fullchain.pem
ssl_key = </global/configs/letsencrypt_data/live/mail.meinmailserver.com/privkey.pem
# Individuelle Zertifkate pro Domain
local_name mail.meinmailserver.com {
ssl_cert = </global/configs/letsencrypt_data/live/mail.meinmailserver.com/fullchain.pem
ssl_key = </global/configs/letsencrypt_data/live/mail.meinmailserver.com/privkey.pem
}
local_name mail.meinmailserver2.com {
ssl_cert = </global/configs/letsencrypt_data/live/mail.meinmailserver2.com/fullchain.pem
ssl_key = </global/configs/letsencrypt_data/live/mail.meinmailserver2.com/privkey.pem
}
local_name mail.meinmailserver3.com {
ssl_cert = </global/configs/letsencrypt_data/live/mail.meinmailserver3.com/fullchain.pem
ssl_key = </global/configs/letsencrypt_data/live/mail.meinmailserver3.com/privkey.pem
}
ssl_dh = </etc/ssl/dhparams_4096.pem
Weitere Infos Dovecot SSL Configuration
conf.d/10-logging.conf
Falls man etwas Debuggen möchte, kann man das hier konfigurieren:
vi /usr/local/etc/dovecot/conf.d/10-logging.conf
Welche Logfiles benutzt werden findest du mit dem Befehl:
doveadm log find
Detailierte Infos zu den Logfiles findest du im dovecot Wiki.
conf.d/20-imap.conf
Um die Komprimierung
COMPRESS=DEFLATE
zu aktivieren, wird das zlib Plugin verwendet.
Die Kompression kann für das Lesen (IMAP) und Schreiben (LMTP) aktiviert werden:
vi /usr/local/etc/dovecot/conf.d/20-imap.conf
protocol imap {
mail_plugins = $mail_plugins zlib imap_zlib
}
conf.d/20-lmtp.conf
Hier die Kompression ebenfalls noch aktivieren:
vi /usr/local/etc/dovecot/conf.d/20-lmtp.conf
protocol lmtp {
mail_plugins = $mail_plugins zlib
}
conf.d/90-plugin.conf
Und jetzt noch die Plugins:
vi /usr/local/etc/dovecot/conf.d/90-plugin.conf
plugin {
#setting_name = value
zlib_save_level = 6 # 1..9; default is 6
zlib_save = gz # or bz2, xz or lz4
}
Konfiguration anschauen/testen:
doveconf -n
Sendmail / SASL Konfigurieren
SASL (Simple Authentication and Security Layer) wird für die Sendmail/SMTP Authentifizierung benötigt.
Dovecot bietet zwar auch SASL an (siehe Dovecot Wiki) – allerdings nicht für Sendmail. Daher verwenden wir das SASL von Cyrus
pkg install cyrus-sasl-sql
pkg install sendmail+tls+sasl2
Nun die SASL Konfiguration anpassen:
vi /usr/local/lib/sasl2/Sendmail.conf
Das kann dann so aussehen:
pwcheck_method: auxprop
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: localhost
sql_user: dbuser
sql_passwd: dbpasswd
sql_database: mydatabase
sql_verbose: no
sql_select: SELECT password FROM mail_entries WHERE ( username = '%u' OR ( username = '%u' AND domain = '%r' ) ) AND is_active = 1 AND is_mainaccount = 1
sql_usessl: 0
mech_list: login plain cram-md5 digest-md5
log_level: 1
Jetzt noch Sendmail (in deinem Custom sendmail.mc File):
FEATURE(`local_lmtp',`[IPC]',`FILE /var/run/dovecot/lmtp')dnl
MODIFY_MAILER_FLAGS(`LOCAL', `+u')dnl
MODIFY_MAILER_FLAGS(`LOCAL', `-w')dnl
[.. hier die restlichen MAILER Definitionen ..]
MAILER(`local')dnl
Dovecot aktivieren
Im rc.conf aktivieren:
vi /etc/rc.conf
#-----------------------------------------------#
# Mail System
#-----------------------------------------------#
dovecot_enable="YES"
Starten
service dovecot start
und auch noch Sendmail neu starten. Ich mach sicherheitshalber ein killall,
da ein einfaches sendmail restart
nicht immer den gewünschten Erfolg bringt.
killall sendmail
service sendmail start
Dovecot Administrieren
Die Mailboxen werden mit doveadm
administriert. Weitere Infos dazu im Dovecot Wiki.
Mailbox erstellen
Als erstes die Mailbox Daten (username/passwort etc.) im mysql erfassen. Danach mit doveadm die Mailboxen erstellen:
# user eröffnen
doveadm mailbox create -u mailboxusername INBOX
# ein paar default mailboxen erstellen
doveadm mailbox create -u mailboxusername INBOX.Sent
doveadm mailbox create -u mailboxusername INBOX.Trash
doveadm mailbox create -u mailboxusername INBOX.Drafts
Die Mailboxen werden dann in automatisch erstellt in unserem vordefinierten Dovecot Home Directory :
/mail/dovecot
Ach, die Folders Sent, Trash und Drafts muss man im Thunderbird „Abonnieren“, sonst werden sie nicht angezeigt. 😉
Folders zwischen Accounts verschieben
Wenn man einen neuen Email Account eröffnet hat und Folders von einem ehemaligen Account in den neuen verschieben möchte, kann das sehr lange dauern, wenn man das mit Thunderbird oder einem anderen Email Client macht. Einfacher geht es, wenn man die Folders direkt auf dem Server von einem Account zum anderen schieben kann.
In diesem Beispiel verschieben wir die Inhalte des Folders „Lieferanten“ von account1 nach account2:
cd /mail/dovecot
cp -R account1/Maildir/Lieferanten/* account2/Maildir/Lieferanten/
rm -rf account1/Maildir/Lieferanten
Nun müssen die Index Files gelöscht werden, diese werden nach dem Dovecot Restart automatisch neu erstellt.
rm account1/Maildir/dovecot.index.*
rm account2/Maildir/Lieferanten/dovecot.index.*
service dovecot restart
Jetzt noch die Folders abonnieren. Diesen Befehl habe ich öfters angetroffen, funktioniert aber leider NICHT:
doveadm mailbox subscribe -u fabulouseinkauf "*"
Man muss einen loop verwenden, dann gehts. Also alle boxen auflisten und subscriben:
doveadm mailbox subscribe -u account2
$( doveadm mailbox list -u account2 )
Probleme machen hier jedoch alle Folder, die einen Leerschlag / Space drin haben.
doveadm(account2): Error: Can't - mailbox subscribe to: Mailbox can't be subscribed
doveadm(account2): Error: Can't Ich mailbox subscribe to: Mailbox can't be subscribed
doveadm(account2): Error: Can't habe mailbox subscribe to: Mailbox can't be subscribed
doveadm(account2): Error: Can't Spaces mailbox subscribe to: Mailbox can't be subscribed
Die Subscribtions sind einfach als Textfile im Root des jeweiligen Accounts gespeichert. Das File kann man entweder manuell anpassen oder man macht es über den Email Client.
$/mail/dovecot/account2/Maildir)> vi subscriptions
Hier einfach die fehlerhaften Einträge löschen oder ergänzen bis alles stimmt. Oder eben einfach über den Thunderbird alles Abonnieren. Geht vielleicht einfacher 😉
Testen
Übersicht der einzelnen Ports:
SMTP (Ausgehende Mails):
- Port 25 oder 587 – Unverschlüsselt, Auth: AUTH
- Port 587 – Secure (TLS), Auth: STARTTLS
- Port 465 – Secure (SSL), Auth: SSL
IMAP (Eingehende Mails):
- Port 143 – Unverschlüsselt, Auth: AUTH
- Port 143 – Secure (TLS), Auth: STARTTLS
- Port 993 – Secure (SSL), Auth: SSL
POP3 (Eingehende Mails):
- Port 110 – Unverschlüsselt, Auth: AUTH
- Port 995 – Secure (SSL), Auth: SSL
Unverschlüsselte Verbindungen Testen:
# telnet localhost 110
Trying ::1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
# telnet localhost 143
Trying ::1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=LOGIN AUTH=PLAIN AUTH=CRAM-MD5 AUTH=DIGEST-MD5] Dovecot ready.
Verschlüsselte Verbindungen Testen:
# telnet localhost 143
Trying ::1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=LOGIN AUTH=PLAIN AUTH=CRAM-MD5 AUTH=DIGEST-MD5] Dovecot ready.
a starttls
a OK Begin TLS negotiation now.
oder per OpenSSL:
openssl s_client -connect mail.meintestserver.com:143 -starttls imap
Der Output sollte dann etwa so aussehen:
CONNECTED(00000003)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = mail.meintestserver.com
verify return:1
---
Certificate chain
0 s:/CN=mail.meintestserver.com
i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
i:/O=Digital Signature Trust Co./CN=DST Root CA X3
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGFjCCBP6gAwIBAgISA03xPYgVq7hj5JQfQhgHNtA3MA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODA2MjkyMTAwNDZaFw0x
ODA5MjcyMTAwNDZaMCExHzAdBgNVBAMTFm1haWwuc3l6emxpbmdtZWRpYS5jb20w
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGlLJBHOV/fUFM4zRMrdtX
8R/n/9lQAj+KTOtxIpjDaJzTBZKuY6tsoGslncYDQukUOsJycQ4IKZ+67g9S/v2k
MTJk3mcTGlQSzzGw9Ldjj9L2H5y6l/enG6108bxn2IgiGz44aolVPXj6LoOV9h3/
sfXP9vTNRa9yZLmp21q4vA27OG6L47V/zoLzawNntGSEx3CxkyTx9BTwUnGuv4z5
fZ8Uj5bYF4fRv6+BdgnqJVTkKZ8VuCOSpmwVFu/T0il3CxYNsfaBdKdqfZm/66wS
t/iD9CF4IdDC5i1O67pvN7QtMYER3VEUwMP9+B/HvFGRziV+6HxXCadYxX0M4PQf
AgMBAAGjggMdMIIDGTAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUH
AwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFMlBTZJqsyOTKlRo
m6EYszzRERCYMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMG8GCCsG
AQUFBwEBBGMwYTAuBggrBgEFBQcwAYYiaHR0cDovL29jc3AuaW50LXgzLmxldHNl
bmNyeXB0Lm9yZzAvBggrBgEFBQcwAoYjaHR0cDovL2NlcnQuaW50LXgzLmxldHNl
bmNyeXB0Lm9yZy8wIQYDVR0RBBowGIIWbWFpbC5zeXp6bGluZ21lZGlhLmNvbTCB
/gYDVR0gBIH2MIHzMAgGBmeBDAECATCB5gYLKwYBBAGC3xMBAQEwgdYwJgYIKwYB
BQUHAgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5cHQub3JnMIGrBggrBgEFBQcCAjCB
ngyBm1RoaXMgQ2VydGlmaWNhdGUgbWF5IG9ubHkgYmUgcmVsaWVkIHVwb24gYnkg
UmVseWluZyBQYXJ0aWVzIGFuZCBvbmx5IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUg
Q2VydGlmaWNhdGUgUG9saWN5IGZvdW5kIGF0IGh0dHBzOi8vbGV0c2VuY3J5cHQu
b3JnL3JlcG9zaXRvcnkvMIIBAwYKKwYBBAHWeQIEAgSB9ASB8QDvAHUA23Sv7ssp
7LH+yj5xbSzluaq7NveEcYPHXZ1PN7Yfv2QAAAFkTZAYrwAABAMARjBEAiBVHA0b
UqiqUjs8d26ggrTJk0bPh3FAkpiEa99mnMpEywIgRH6YfZyiyuxW+6iowFe4Xp0g
bYWdexsnPB0GoXeldtkAdgApPFGWVMg5ZbqqUPxYB9S3b79Yeily3KTDDPTlRUf0
eAAAAWRNkBiyAAAEAwBHMEUCIFTdedyB2QYW/3YoWwCrDfXgdFwvi5IqsuWcckxO
WdE8AiEAxxNFC1aN+UAZSctJFXwRDqbKGgvcCmdcklkYyTGI8DEwDQYJKoZIhvcN
AQELBQADggEBACGZxs8HuwvqjqqveLwU+4bPmdtu0Yhct4syBsyrvGmZD/1STZ0S
r0oc2i6rZAcLRSj+m2q8s5bZOGmUIwP0mnDR/leJdINHy6BK2iWrP7TpnQ8weG42
ry+P3oyeTay6jr1IiOUQF12JeMfH0CnmYFM9nV0Nt/xmUNrI/a0GLpc8MvLnmft8
xV2cHrdSfJb/w2kCExTpaQTMXlQniOFgaXpQ3mmMp6LOWx9YFrYG5YIdVjbvaX8C
4SZS+8dTxmkrGe0R2WbMfhgg2UY0sQSxCotACeeAEn7tnGMO+JGSFJxcfNNNWjVX
R1yfzLGmFRTNyn8XuuivSci1xwkSB5YaVdA=
-----END CERTIFICATE-----
subject=/CN=mail.meintestserver.com
issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 3789 bytes and written 457 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-GCM-SHA384
Session-ID: 821B689033000291733BE247A6577EE719ECB83BA6CE83FAA7A5CEAC8DA5BC16
Session-ID-ctx:
Master-Key: D1B41EEE4283FC3BC289AB2F2478CB9974DFB439271847C8733FD8F54E2690BDEDD19D393BC7C0B43E9B0DA295651B36
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 300 (seconds)
TLS session ticket:
0000 - 8b 87 bf e7 6a 14 7f 9d-8b 3b db ba 4e 24 c8 b8 ....j....;..N$..
0010 - 5a f0 0a 52 f2 a2 7f 1b-27 23 74 f6 e6 63 f2 28 Z..R....'#t..c.(
0020 - 6a 30 fa 89 5d 02 cc 2d-6c 65 33 8e 4e d5 53 64 j0..]..-le3.N.Sd
0030 - 10 e5 fe 97 fb e7 a4 1b-63 a1 dd 80 0f ef 73 08 ........c.....s.
0040 - 78 f5 7c 16 51 10 91 e1-a7 27 00 09 fa ad b6 cc x.|.Q....'......
0050 - 08 46 9b 0d 10 eb 21 5e-3d 7b f2 8e 78 41 85 b5 .F....!^={..xA..
0060 - 49 29 11 7b df a0 9b a7-dd 14 a6 d5 8e d8 cb 33 I).{...........3
0070 - f4 2a cc c9 39 f0 b6 ff-86 f0 52 02 94 d9 9a c6 .*..9.....R.....
0080 - ff 24 ce 03 fb 40 d8 d7-6a f1 73 42 78 d1 b6 1b .$...@..j.sBx...
0090 - 08 c9 d2 fd 4c 58 11 7b-ab 07 8c d4 70 dc df d5 ....LX.{....p...
Start Time: 1532194218
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
. OK Pre-login capabilities listed, post-login capabilities have more.
Weitere Tests:
openssl s_client -connect mail.testserver.com:993 -servername mail.testserver.com
openssl s_client -connect mail.testserver.com:465 -servername mail.testserver.com
openssl s_client -connect mail.testserver.com:587 -servername mail.testserver.com
Login testen
Erst mal Login über localhost
testen, danach natürlich auch über einen externen Computer remote (telnet mail.meintestserver.com 143
)
# telnet localhost 143
Trying ::1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=LOGIN AUTH=PLAIN AUTH=CRAM-MD5 AUTH=DIGEST-MD5] Dovecot ready.
a login meinusername meinpasswort
a OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY LITERAL+ NOTIFY SPECIAL-USE COMPRESS=DEFLATE] Logged in
Mailboxen auflisten
# telnet localhost 143
Trying ::1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=LOGIN AUTH=PLAIN AUTH=CRAM-MD5 AUTH=DIGEST-MD5] Dovecot ready.
a login meinusername meinpasswort
a OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY LITERAL+ NOTIFY SPECIAL-USE COMPRESS=DEFLATE] Logged in
a LIST "" *
* LIST (HasChildren) "." INBOX
* LIST (HasNoChildren) "." INBOX.Linux
* LIST (HasNoChildren Trash) "." INBOX.Trash
* LIST (HasChildren UnMarked) "." INBOX.Archiv
* LIST (HasNoChildren UnMarked) "." INBOX.Archiv.Medien
* LIST (HasNoChildren UnMarked) "." INBOX.Classes_Helpers
* LIST (HasChildren UnMarked) "." INBOX.Archives
* LIST (HasNoChildren UnMarked) "." INBOX.Archives.2016
* LIST (HasNoChildren UnMarked) "." INBOX.Archives.2018
* LIST (HasNoChildren) "." INBOX.Business
* LIST (HasNoChildren UnMarked Drafts) "." INBOX.Drafts
* LIST (HasNoChildren UnMarked Sent) "." INBOX.Sent
* LIST (HasChildren UnMarked) "." INBOX.TODOs
* LIST (HasNoChildren UnMarked) "." INBOX.TODOs.Server
* LIST (HasNoChildren UnMarked) "." INBOX.TODOs.PaymentSolutions
a OK List completed (0.020 + 0.000 + 0.020 secs).
Weitere Tests
Gibt es im Dovecot Wiki
Fehlermeldungen
pw: user ‚dovecot‘ disappeared during update
Während der Installation tauchte dieser Fehler auf:
New packages to be INSTALLED: dovecot: 2.3.2 Number of packages to be installed: 1 The process will require 20 MiB more space. 4 MiB to be downloaded. Proceed with this action? [y/N]: y [1/1] Fetching dovecot-2.3.2.txz: 100% 4 MiB 4.0MB/s 00:01 Checking integrity... done (0 conflicting) [1/1] Installing dovecot-2.3.2... ===> Creating groups. Creating group 'dovecot' with gid '143'. Creating group 'dovenull' with gid '144'. ===> Creating users Creating user 'dovecot' with uid '143'. pw: user 'dovecot' disappeared during update Creating user 'dovenull' with uid '144'. pw: user 'dovenull' disappeared during update pkg: PRE-INSTALL script failed
Lösung: Die Passwort Datenbank ist fehlerhaft. Um dies zu korrigieren, folgenden Befehl ausführen:
pwd_mkdb /etc/master.passwd
Danach kann man die Installation erfolgreich durchführen.
doveconf: Error: t_readlink(/var/run/dovecot/dovecot.conf) failed: readlink() failed: No such file or directory
Damit dieser Fehler nicht auftaucht (siehe Bugreport):
Symlink zu Configfile erstellen, sofern dieser noch nicht vorhanden ist:
ln -s /usr/local/etc/dovecot/dovecot.conf /var/run/dovecot/dovecot.conf
error:140790E5:SSL routines:ssl23_write:ssl handshake failure:s23_lib.c:177
Folgende Tests schlugen zuerst fehl:
SSL Verbindung:
teslina@Black32 ~ $ openssl s_client -connect mail.testserver.com:993 -servername mail.testserver.com
CONNECTED(00000003)
140685460174488:error:140790E5:SSL routines:ssl23_write:ssl handshake failure:s23_lib.c:177:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 336 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1532097717
Timeout : 300 (sec)
Verify return code: 0 (ok)
TLS:
teslina@Black32 ~ $ openssl s_client -connect mail.testserver.com:143 -servername mail.testserver.com
CONNECTED(00000003)
140050245203608:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:794:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 336 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1532097709
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
Im Maillog:
dovecot: imap-login: Error: Failed to initialize SSL server context: Couldn't parse DH parameters: error:0906D06C:PEM routines:PEM_read_bio:no start line: Expecting: DH PARAMETERS: user=<>, rip=46.126.137.118, lip=178.22.71.83, session=<tNRZR3Bxeqwufol2>
Lösung: Ab Version Dovecot Version 2.3 ist die Angabe der DH Parameter zwingend. Generieren und einbinden wie in diesem Abschnitt beschrieben.
COMPRESS=DEFLATE wird nicht angezeigt
Beachte: COMPRESS=DEFLATE wird unter Dovecot erst nach dem Login angezeigt, sofern es korrekt konfiguriert wurde. So kann man es testen:
telnet mail.testserver.com 143
Trying 111.22.33.44...
Connected to mail.testserver.com.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=LOGIN AUTH=PLAIN AUTH=CRAM-MD5 AUTH=DIGEST-MD5] Dovecot ready.
a login "username" "passwort"
a OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY LITERAL+ NOTIFY SPECIAL-USE COMPRESS=DEFLATE] Logged in
dovecot: master: Warning: service(imap-login): process_limit (100) reached, client connections are being dropped
Es sind zuviele Connections aktiv. Man kann nun einfach das process_limit erhöhen. Default Wert ist 100:
vi /usr/local/etc/dovecot/conf.d/10-master.conf
service imap {
# Most of the memory goes to mmap()ing files. You may need to increase this
# limit if you have huge mailboxes.
#vsz_limit = $default_vsz_limit
# Max. number of IMAP processes (connections)
#process_limit = 1024
process_limit = 500
}
Danach dovecot neu starten
service dovecot restart
Connections anzeigen:
Imap Prozesse:
ps ax | grep imap | wc
Imap Login Prozesse:
ps ax | grep imap-login | wc
dovecot Connections:
doveadm who -1 2>/dev/null | wc -l
nur Imap:
doveadm who -1 2>/dev/null | grep -Fc imap
Weiterführende Informationen: https://doc.dovecot.org/admin_manual/login_processes/
.