Proxmox Mail Gateway mit Login/Passwort
Das Promox Mail Gateway dient allein dem Mailtransport: Es sortiert ein- und ausgehende Mails den richtigen Mailservern zu. Damit hat es keine Ahnung von Nutzerkonten. Aber manchmal braucht man trotzdem die Einlieferung nach Authentisierung. Dies scheint jedoch schwierig.
Die gängigen Lösungen für das Problem befassen sich damit, dem Mailserver Postfix einen Submission-Port und Authentisierung beizubringen. Das erfordert Eingriffe in das Template-System des Mail Gateways und zusätzliche Software, die die Nutzerverwaltung vornehmen kann. Insgesamt ist das ziemlich aufwändig und pflegeintensiv.
Beim Durchstöbern der Systeme, die Nutzerauthenisierung für EMail machen können, bin ich über dovecot gestolpert. Eigentlich ist Dovecot ein Backend, dass Nutzer- und Postfachverwaltung macht. An dieses Core-System werden verschiedenen Kommunikationsmodule angeflanscht, die man einzeln nachinstallieren kann. Z.B. für POP3, IMAP oder Submission ... Moment mal!
# apt install dovecot-submissiond
Und es geht.
Details
Der Submission-Teil von Dovecot macht genau ein Ding:
- Auf einem Submission-Port eine Verbindung annehmen
- Den Nutzer authentisieren
- Die angenommene Mail an den Mailserver übergeben
Perfekt.
Ein paar Konfigs sind aber nötig.
$ cat /etc/dovecot/conf.d/20-submission.conf submission_relay_host = localhost submission_relay_port = 26
Klar, er soll die Mail auf der Innenseite des Mail Gateways einliefern, damit sie in die weite Welt geschickt werden kann.
Die Nutzer des lokalen Systems können sich nun anmelden und Mail verschicken. Leider geht nur ein Plaintext-Authentisierung, weil das lokale System seine Passworte verschlüsselt speichert. Und verschlüsselt übertragene Passwort-Hashes kann man halt nicht gegen anders verschlüsselte Passworte überprüfen. Wenn man das trotzdem will, muss man die Passworte im Klartext ablegen:
$ cat /etc/dovecot/conf.d/10-auth.conf
auth_mechanisms = plain login digest-md5 cram-md5
!include auth-passwdfile.conf.ext
$ cat /etc/dovecot/conf.d/auth-passwdfile.conf.ext
passdb passwd-file {
default_password_scheme = plain
auth_username_format = %{user}
passwd_file_path = /etc/dovecot/users
}
userdb passwd-file {
auth_username_format = %{user}
passwd_file_path = /etc/dovecot/users
}Aber wie sieht so ein Passwort-File dann aus?
$ ls -l /etc/dovecot/users -rw-r----- 1 root dovecot 61 Sep 14 14:14 /etc/dovecot/users # cat /etc/dovecot/users login:password:1000:1000::/home/pop/user
Und tut.
Bleiben noch die Zertifikate, die man am besten vom PMG abschreibt:
#! /bin/sh if [ /etc/dovecot/private/dovecot.pem -ot /etc/pmg/pmg-tls.pem ]; then sed '/^$/,$d' < /etc/pmg/pmg-tls.pem > /etc/dovecot/private/dovecot.key sed '1,/^$/d' < /etc/pmg/pmg-tls.pem > /etc/dovecot/private/dovecot.pem chmod 600 /etc/dovecot/private/dovecot.??? systemctl restart dovecot.service fi
Das Script alle paar Stunden oder Tage ausführen und es ist gut.
