Postfix (algemeen): verschil tussen versies
Naar navigatie springen
Naar zoeken springen
Regel 3: | Regel 3: | ||
== Domein toevoegen == | == Domein toevoegen == | ||
− | Voeg een nieuw domein toe aan bestand | + | Voeg met een editor een nieuw domein toe aan bestand |
/etc/postfix/vhosts | /etc/postfix/vhosts |
Versie van 8 okt 2015 15:27
Postfix is de standaard mailserver voor Ubuntu. De handleidingen van TransIP gaan uit van Postfix + Dovecot + SASL + Squirrelmail. Dus de keuze is gemaakt
Domein toevoegen
Voeg met een editor een nieuw domein toe aan bestand
/etc/postfix/vhosts
Voorbeeld van zo'n vhosts-bestand:
example.com example.nl example.nu
Emailadres toevoegen
Configuratie - Overzicht
/etc/postfix/master.cf
Bevat algemene instellingen zoals privileges. Onder operationele omstandigheden heb ik dit bestand waarschijnlijk zelden of nooit nodig/etc/postfix/main.cf
Is het centrale configuratiebestand.postmap
is een commando voor Postfix lookup table management: Hiermee worden oa. db-bestanden bijgewerkt of uitgelezen- Postfix maakt gebruik van virtuele mailboxen, om op één server meerdere domeinen te kunnen hosten
- Het gebruikersaccount
vmail
wordt gebruikt voor deze virtuele mailboxen /etc/postfix/vhosts
bevat de lijst van domeinnamen waarvan de mailboxen door Postfix worden beheerd/etc/postfix/vmaps
bevat de lijst van emailadressen.
Emailadressen & vhosts verwijderen
- Het script
deletemailuser
(zie appendix) geeft geen foutmeldingen, en de betreffende emailadressen verdwijnen daadwerkelijk uit bestandvmaps
, dus dat ziet er hoopvol uit - bestand
vhosts
blijft onaangeroerd door dit script. Ook als je het laatste emailadres van een domein verwijderd, blijft de naam staan in dit bestand. Op zich logisch. In mijn ervaring kun je een domeinnaam handmatig verwijderen uit bestandvhosts
.
Status
sudo postfix status
vertelt je hoe Postfix er aan toe is.
Casus sep. 2015: postmap: warning: /etc/postfix/vmaps.db: duplicate entry
vmaps.db
is een binair bestand en kun je niet zomaar lezen. Waarschijnlijk gebruik je hier het commandopostmap
voorvmaps
bevat sommige emaildressen dubbel.
Acties
sudo vi vmaps
: Dubbele emailadressen verwijderd met een editorsudo postfix reload
: Herbouwt dit relevante databases? Geen idee, maar de foutmeldingen zijn verdwenen.
Casus sep. 2015: Virtuele host verwijderen
- Hoe verwijder je domeinnamen waarvan de email niet meer hier gehost wordt?
- De lijst met hosts in
vhosts
kun je handmatig aanpassen. Maar is dat wijsheid?
Acties
vhosts
handmatig aangepastsudo postfix reload
- Alles lijkt goed te gaan
Vraagstukken
- Hoe verwijder ik een compleet virtueel domein? Eerst alle emailadressen verwijderen en dan het domein, of in één keer het domein?
- Hoe zorg ik ervoor dat een Apache virtuele host samenwerkt met de bijbehorende Postmaster virtuele host, of gaat dat niet? In de praktijk wordt email vaak verstuurd uit naam van een webserver, en niet uit naam van een domein dat op die webserver draait
- Monitoring: Hoe kan ik zien hoe actief er gemailed wordt, en of een domein wordt misbruikt? Bv. een gekraakte website die mail uitstuurt?
- Hoe vervang ik
addmailusetr
voor iets niet-interactiefs? - Hoe vervang ik
deletemailusetr
voor iets niet-interactiefs? - Hoe doe ik spamfiltering?
- Hoe doe ik beveiliging?
Bronnen
- https://help.ubuntu.com/community/Postfix
- http://stackoverflow.com/questions/4798772/postfix-its-installed-but-how-do-i-test
- http://www.postfix.org/VIRTUAL_README.html
- http://wiki.alpinelinux.org/wiki/Setting_up_postfix_with_virtual_domains
Appendix: Script addmailuser
Script uit een forum-posting:
#!/bin/sh if [ ! $# = 1 ] then echo "Gebruik: $0 gebruikersnaam@domeinnaam" exit 1 else user=`echo "$1" | cut -f1 -d "@"` domain=`echo "$1" | cut -s -f2 -d "@"` if [ -x $domain ] then echo "Geen domeinnaam opgegeven\nGebruik: $0 gebruikersnaam@domeinnaam" exit 2 fi echo "Gebruiker toevoegen $user@$domain in /etc/dovecot/users" echo "$user@$domain::5000:5000::/home/vmail/$domain/$user/:/bin/false::" >> /etc/dovecot/users echo "Aanmaken van de maildirectory /home/vmail/$domain/$user" if [ ! -x /home/vmail/$domain ] then mkdir /home/vmail/$domain chown 5000:5000 /home/vmail/$domain chmod 700 /home/vmail/$domain fi /usr/bin/maildirmake.dovecot /home/vmail/$domain/$user 5000:5000 /usr/bin/maildirmake.dovecot /home/vmail/$domain/$user/.Drafts 5000:5000 /usr/bin/maildirmake.dovecot /home/vmail/$domain/$user/.Sent 5000:5000 /usr/bin/maildirmake.dovecot /home/vmail/$domain/$user/.Junk 5000:5000 /usr/bin/maildirmake.dovecot /home/vmail/$domain/$user/.Trash 5000:5000 echo "Gebruiker toevoegen aan /etc/postfix/vmaps" echo $1 $domain/$user/ >> /etc/postfix/vmaps postmap /etc/postfix/vmaps postfix reload fi echo "\nVoer een wachtwoord in voor de mailbox" #SWAP THE FOLLOWING passwd LINES IF USING A UBUNTU VERSION PRIOR TO 12.04 #passwd=`dovecotpw` passwd=`doveadm pw -u $user` echo "Wachtwoord instellen voor $user@$domain in /etc/dovecot/passwd" if [ ! -x /etc/dovecot/passwd ] then touch /etc/dovecot/passwd chmod 640 /etc/dovecot/passwd fi echo "$user@$domain:$passwd" >> /etc/dovecot/passwd exit 0
En dit is wat dat script doet:
- Per emailadres wordt een regel toegevoegd aan /etc/dovecot/users - Nix complex
- Per emailadres wordt een map met submappen aangemaakt onder /home/vmail
- Wachtwoorden worden CRAM-MD5-gehashed opgeslagen in /etc/dovecot/passwd
Appendix: Script deletemailuser
#!/bin/bash if [ ! $# = 1 ] then echo -e "Gebruik het volgende: $0 gebruikersnaam@jouwdomein" exit 1 else user=`echo "$1" | cut -f1 -d "@"` domain=`echo "$1" | cut -s -f2 -d "@"` if [ -x $domain ] then echo -e "Geen domein ingevoerd\nGebruik: $0 gebruikersnaam@jouwdomein: " exit 2 fi fi read -n 1 -p "Verwijder $user@$domain van de server? [Y/N]? " echo case $REPLY in y | Y) new_users=`grep -v $user@$domain /etc/dovecot/users` new_passwd=`grep -v $user@$domain /etc/dovecot/passwd` new_vmaps=`grep -v $user@$domain /etc/postfix/vmaps` echo "Verwijder $user@$domain van /etc/dovecot/users" echo "$new_users" > /etc/dovecot/users echo "Verwijder $user@$domain van /etc/dovecot/passwd" echo "$new_passwd" > /etc/dovecot/passwd echo "Verwijder $user@$domain van /etc/postfix/vmaps" echo "$new_vmaps" > /etc/postfix/vmaps postmap /etc/postfix/vmaps postfix reload read -n1 -p "Verwijder alle bestanden in /home/vmail/$domain/$user? [Y/N]? " DELETE echo case $DELETE in y | Y) echo "Verwijder bestanden in /home/vmail/$domain/$user" rm -fr /home/vmail/$domain/$user ;; * ) echo "Bestanden niet verwijderd in /home/vmail/$domain/$user" ;; esac ;; * ) echo "Afsluiten..." ;; esac