Doorsturen van mails via eigen domein op Fedora 34
Bij alle codeblokken op deze pagina wordt uitgegaan van uitvoering als root/superuser.
Voor het bewerken van tekst wordt nano gebruikt, maar je kunt natuurlijk een
andere editor gebruiken.
Nadat je op Hetzner
een nieuwe VPS hebt aangemaakt, moeten eerst alle dependencies op orde zijn:
dnf update
Zorg dat na het opnieuw opstarten van de server voortaan de services die nodig zijn standaard mee
opstarten:
dnf install httpd postfix
# Extra dependencies voor het gemak:
dnf install nano telnet
systemctl enable httpd
Om te weten of de server werkt, kan je wat tekst invoeren in /var/www/html/index.html en nadat
de server opnieuw is opgestart, de website bezoeken.
systemctl enable postfix
De volgende stap is om /etc/postfix/main.cf te bewerken. Voeg deze regels toe:
inet_interfaces = all
En haal
mydestination = $myhostname, localhost.$mydomain, localhost
# Custom config
virtual_alias_domains = test.allersma.be
virtual_alias_maps = hash:/etc/postfix/virtual
inet_interfaces = localhost
weg.
In dit voorbeeld wordt test.allersma.be als domein gebruikt waar mail voortaan heen gestuurd
wordt, d.w.z. je eigen domein.
Vervolgens kan in /etc/postfix/virtual deze tekst worden toegevoegd:
test@test.allersma.be jouw-eigen-mail@gmail.com
Waarbij test@test.allersma.be het mailadres is waar mails op ontvangen moeten worden en
jouw-eigen-mail@gmail.com het mailadres is waar de mails naartoe gestuurd moeten worden.
postmap /etc/postfix/virtual
Moet uitgevoerd worden zodat er een database aangemaakt/geupdate wordt die door postfix wordt ingelezen.
Ten slotte kan de server opnieuw opgestart worden met het commando init 6
om de
wijzigingen van kracht te laten zijn.
Elke keer dat je het bestand wijzigt moet je dus postmap /etc/postfix/virtual
en init 6 of eventueel service postfix reload uitvoeren.
Bij een wijziging voor /etc/postfix/main.cf hoef je geen postmap te gebruiken.
Ik ben een beetje lui en heb het niet getest, maar ik denk dat je wel even de service moet reloaden.
DNS instellen
Wat betreft DNS instellingen hoeft alleen een A-record aangemaakt te worden:
Naam Type Content TTL
test A IP-adres 8h
Een mailadres/domein blokkeren
Dit is alleen een blokkade op MAIL FROM wat binnenkomt en kan dus niet als beveiligingsmaatregel
beschouwd worden.
Het doorsturen van mails is nu mogelijk. De volgende stap is om bepaalde mailadressen of domeinen te blokkeren.
Dit kan gedaan worden door allereerst in /etc/postfix/main.cf deze regels toe te voegen:
smtpd_recipient_restrictions =
Daarna kan in /etc/postfix/access regels toegevoegd worden om bepaalde adressen/domeinen te blokkeren:
check_sender_access hash:/etc/postfix/access
permit
# Hierbij krijgt de zender een 550 terug met het bericht 'Blacklisted'
Ten slotte moet elke keer als het blacklisted bestand gewijzigd wordt deze
commando's in Bash uitgevoerd worden:
test@example.com 550 Blacklisted
# Het is ook mogelijk om REJECT te gebruiken, waardoor de zender een 554 terug krijgt met het bericht
# 'Access denied'
test@example.com REJECT
# Alle mails van het domein 'example.com' kunnen ook geblokkeerd worden:
example.com REJECT
# Of alle gebruikers die beginnen met 'test' worden tegengehouden:
test@ REJECT
postmap /etc/postfix/access
service postfix reload
En hoe kan ik testen?
Je kunt natuurlijk een mailtje sturen via een mailclient zoals Thunderbird. Maar als je wat meer controle wilt,
bijvoorbeeld omdat je in de sectie hierboven niet smtpd_recipient_restrictions
maar
smtpd_sender_restrictions
hebt gebruikt, en het dus gaat om wie de mail heeft verstuurd, kan je ook
via telnet mailen:
$ telnet test.allersma.be
ehlo test.allersma.be
mail from: zender@example.com
rcpt to: ontvanger@example.com
data
Subject: Dit is een onderwerp.
Zet hier neer wat je kwijt wilt
.
quit
Op deze manier stuur je onversleuteld mails naar het adres. Als je SSL wilt testen, vervang het telnet commando voor
$ openssl s_client -starttls smtp -connect test.allersma.be:587
Als je dan een vage foutmelding hebt, ondersteunt je Postfix geen SSL. En dat is niet fijn, want dan worden de mails die je
ontvangt onversleuteld uitgewisseld. Met de kans dat iemand met jouw mailtjes mee zit te kijken.
Trouwens, als je een reactie krijgt zoals dit:
250 2.0.0 Ok: queued as XXXXXXX
En je vraagt je af of het daadwerkelijk wel in de queue staat, dan kan je postqueue -p
aanroepen.
Hoe zet ik TLS/SSL aan?
Ik zal daar nog zelf wat over schrijven. Maar in essentie moet je Certbot gebruiken om een certificaat aan te maken. Althans, dat raad ik aan. Een alternatief zou zijn om naar een 'gewone' CA te gaan (wat geld kost) of een self-signed certificaat te maken. Goed, zodra je een certificaat en sleutel hebt, kan je kijken naar dit forumbericht.