User Tools

Site Tools


opensmtpd_installieren

OpenSMTPd aus Backports installieren

OpenSMTPd muss aus den Backports installiert werden.

apt install -t bookworm-backports opensmtpd opensmtpd-extras opensmtpd-filter-senderscore

Da wir eventuell Mails an externe Mailadressen weiterleiten wollen benötigen wir SRS (sender rewrite scheme). Sonst wird bei einer Mailweiterleitung DKIM und SPF gebrochen. Dazu brauchen wir einen “Schlüssel”. den generieren wir mit:

head -c 30 /dev/urandom | base64

Jetzt passen wir schnell noch unser /etc/smtpd.conf an. Und tragen den soeben generierten Schlüssel als SRS Key ein. Vorsicht, wenn der später mal neu generiert wird, und noch alte Mails weitergeleitet werden sollen, sollte man für einen Monat ca den alten Key als

srs key backup "alter Key"

eintragen.

Hier erstmal die Version vom alten Server, die ich dann während ich diese Beschreibung mache anpassen werde auf die aktuelle Version. Ich möchte z.B. DKIM von OpenSMTPd erledigen lassen und nicht von rspamd wie in dieser Version. Diese Beschreibung ist work in progress. Wenn dann alles fertig ist, werde ich den Server nochmal platt machen und komplett nach der Beschreibung aufsetzen. Also wenn dieser Hinweis fehlt, ist es fertig ;-)

pki "mail.domain.tld" cert "/etc/letsencrypt/live/mail.domain.tld/fullchain.pem"
pki "mail.domain.tld" key "/etc/letsencrypt/live/mail.domain.tld/privkey.pem"
srs key "generierter Zufall"

#srs key backup "alter Key"

# internal aliases to root
table aliases file:/etc/mail/aliases

# External Mails in Database vmail
table domains mysql:/etc/mail/mysql.conf
table virtuals mysql:/etc/mail/mysql.conf
table credentials mysql:/etc/mail/mysql.conf

filter check_rdns phase connect match !rdns \
    disconnect "550 no rDNS"

filter senderscore \
    proc-exec "filter-senderscore -junkBelow 70 -slowFactor 5000"

filter rspamd proc-exec "filter-rspamd"

filter dkimsign_rsa proc-exec "filter-dkimsign -d domain.tld  -s 2024 -k /etc/mail/2024.private.rsa.key"

listen on eth0 tls pki mx.brauconsulting.de filter { senderscore, rspamd, check_rdns }
listen on eth0 port 465 smtps pki mail.domain.tld auth <credentials> filter { dkimsign_rsa }
listen on eth0 port 587 tls-require pki mail.domain.tld auth <credentials> filter { dkimsign_rsa }

action "local_mail" mbox alias <aliases>
action "domain_mail" maildir "/var/vmail/%{dest.domain:lowercase}/%{dest.user:lowercase}" virtual <virtuals>
action "outbound" relay
action "RECV" lmtp "/var/run/dovecot/lmtp" rcpt-to virtual <virtuals>

# match from any for domain <domains> action "domain_mail"
match from any for domain <domains> action "RECV"
match from local for local action "local_mail"

match from local for any action "outbound"
match auth from any for any action "outbound"

Jetzt legen wir noch einen DKIM Key an. Ich verwende jetzt als Selektor das Jahr in dem der Key erstellt wird, man kann aber auch beliebige andere Namen verwenden.

openssl genrsa -out /etc/mail/2024.private.rsa.key 2048

Dann lasst Ihr Euch dazu den Public Key anzeigen

openssl rsa -in /etc/mail/2024.private.rsa.key -pubout

Mit der Ausgabe baut man sich dann den DNS Eintrag 2024._domainkey.domain.tld. Schreibe ich später hier noch nieder.

Der Key muss noch dem Benutzer opensmtpd zugeordnet werden, damit der DKIM Filter ihn lesen kann:

chown opensmtpd:opensmtpd /etc/mail/2024.private.rsa.key 

Nach einem reboot stellte ich fest, dass OpenSMTPd nicht startete. systemctl status opensmtpd.service zeigte mir an, dass anscheinend der MariaDB Server noch nicht da ist, und deshalb OpenSMTPd nicht hoch kam. Deshalb habe ich jetzt als Workaround den Start von OpenSMTPd verzögert um 60 Sekunden.

 systemctl edit opensmtpd.service

Und dann folgenden Inhalt einfügen:

[Unit]
Description=OpenSMTPD SMTP server
Documentation=man:smtpd(8)
After=network.target

[Service]
ExecStartPre=/bin/sleep 60
Type=forking
ExecStart=/usr/sbin/smtpd

[Install]
WantedBy=multi-user.target
opensmtpd_installieren.txt · Last modified: 2023/12/22 09:37 by admin

Except where otherwise noted, content on this wiki is licensed under the following license: CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki