Difference between revisions of "Mail"
Wdenbesten (Talk | contribs) m (Mailman migratie voorbeeld toegevoegd.) |
Wdenbesten (Talk | contribs) |
||
Line 1: | Line 1: | ||
− | |||
Bij A–Eskwadraat gebruiken we '''Maildir''' voor de opslag van e-mail. Hiervoor gebruikten we het mbox-formaat. We raden gebruikers aan om niet direct de Maildirmappen te benaderen, maar om dit via [http://en.wikipedia.org/wiki/Internet_Message_Access_Protocol IMAP] te doen. De standaardconfiguratie van de meeste mailclients staat hier ook voor ingesteld. | Bij A–Eskwadraat gebruiken we '''Maildir''' voor de opslag van e-mail. Hiervoor gebruikten we het mbox-formaat. We raden gebruikers aan om niet direct de Maildirmappen te benaderen, maar om dit via [http://en.wikipedia.org/wiki/Internet_Message_Access_Protocol IMAP] te doen. De standaardconfiguratie van de meeste mailclients staat hier ook voor ingesteld. | ||
== Services == | == Services == | ||
− | Op [[haskell]] draait de virtuele machine [[vm-mail]] om het mailverkeer van en naar A-Eskwadraat te regelen: | + | |
− | * [http://www.exim.org/ exim] (''/etc/exim4/'') verwerkt in principe alle binnenkomende mails, en wat er waarheen doorgestuurd moet worden; | + | Op [[Haskell|haskell]] draait de virtuele machine [[Vm-mail|vm-mail]] om het mailverkeer van en naar A-Eskwadraat te regelen: |
− | * [http://www.dovecot.org/ dovecot] (''/etc/dovecot/'') neemt de POP- en IMAP-servers voor zijn rekening; | + | |
− | * [http://spamassassin.apache.org/ SpamAssassin] (''/etc/mail/spamassassin/'') [[ | + | *[http://www.exim.org/ exim] (''/etc/exim4/'') verwerkt in principe alle binnenkomende mails, en wat er waarheen doorgestuurd moet worden; |
− | * [http://http://www.clamav.net/lang/en/ ClamAV] (''/etc/clamd.d/'') scant het mailverkeer voor virussen en dergelijke; | + | *[http://www.dovecot.org/ dovecot] (''/etc/dovecot/'') neemt de POP- en IMAP-servers voor zijn rekening; |
− | * [http://squirrelmail.org SquirrelMail] (''/etc/squirrelmail/'') is een webmail interface SquirrelMail draait in de webserver van [[vm-mail]]; | + | *[http://spamassassin.apache.org/ SpamAssassin] (''/etc/mail/spamassassin/'') [[Mailfiltering|filtert]] het binnenkomende mailverkeer; |
− | * [http://www.list.org/ Mailman] (''/etc/mailman/'') Mailman is verantwoordelijk voor de mailing lists, zoals de BBCie-announce. | + | *[http://http://www.clamav.net/lang/en/ ClamAV] (''/etc/clamd.d/'') scant het mailverkeer voor virussen en dergelijke; |
+ | *[http://squirrelmail.org SquirrelMail] (''/etc/squirrelmail/'') is een webmail interface SquirrelMail draait in de webserver van [[Vm-mail|vm-mail]]; | ||
+ | *[http://www.list.org/ Mailman] (''/etc/mailman/'') Mailman is verantwoordelijk voor de mailing lists, zoals de BBCie-announce. | ||
== Naamgeving Maildirmappen == | == Naamgeving Maildirmappen == | ||
+ | |||
Let op dat om voor dovecot begrijpbare namen te hebben, de mappen op in ''~/Maildir'' altijd met een punt moeten beginnen. Submappen werken ook op deze manier. Een paar voorbeelden: | Let op dat om voor dovecot begrijpbare namen te hebben, de mappen op in ''~/Maildir'' altijd met een punt moeten beginnen. Submappen werken ook op deze manier. Een paar voorbeelden: | ||
− | * ''~/Maildir/.Intro/'' voor de IMAP-map ''Intro''; | + | *''~/Maildir/.Intro/'' voor de IMAP-map ''Intro''; |
− | * ''~/Maildir/.Sysop.postmaster/'' voor de map ''postmaster'' als submap van ''Sysop''. | + | *''~/Maildir/.Sysop.postmaster/'' voor de map ''postmaster'' als submap van ''Sysop''. |
Als de mappen via IMAP worden aangemaakt gebeurt dit automatisch. | Als de mappen via IMAP worden aangemaakt gebeurt dit automatisch. | ||
== Postfix == | == Postfix == | ||
− | |||
− | Postfix gebruikt meerdere ports om mail te ontvangen en te verwerken. Inkomende mail van leden moet naar de SMTP daemon op port 587 worden gestuurd. Authenticatie en TLS encryptie zijn een vereiste op deze verbinding. In de toekomst zal de [[Router]] de encryptie tussen client en mail-server regelen. Alle andere mail komt binnen op port 25. Spam- en virus-filtering gebeurd via de SMTP daemons op ports 10025 en 10027 voor onbekende en bekende mail, respectievelijk. Lees ''/etc/postfix/master.cf'' voor de configuratie van deze SMTP daemons. | + | Postfix is de SMTP server voor de nieuwe mail server. |
+ | |||
+ | Postfix gebruikt meerdere ports om mail te ontvangen en te verwerken. Inkomende mail van leden moet naar de SMTP daemon op port 587 worden gestuurd. Authenticatie en TLS encryptie zijn een vereiste op deze verbinding. In de toekomst zal de [[Router|Router]] de encryptie tussen client en mail-server regelen. Alle andere mail komt binnen op port 25. Spam- en virus-filtering gebeurd via de SMTP daemons op ports 10025 en 10027 voor onbekende en bekende mail, respectievelijk. Lees ''/etc/postfix/master.cf'' voor de configuratie van deze SMTP daemons. | ||
=== Transport === | === Transport === | ||
− | Eerst checkt Postfix of de inkomende mail aan een lokaal mailadres is gestuurd. Vervolgens word het adres verandert aan de hand van de alias mappen in /etc/postfix/aliases. De mail word naar elke resulterende gebruiker gestuurd via de instellingen van hun ''.forward'' bestand. Welke domeinen als 'lokaal' worden bestempeld staat in ''/etc/postfix/domains/local''. | + | Eerst checkt Postfix of de inkomende mail aan een lokaal mailadres is gestuurd. Vervolgens word het adres verandert aan de hand van de alias mappen in /etc/postfix/aliases. De mail word naar elke resulterende gebruiker gestuurd via de instellingen van hun ''.forward'' bestand. Welke domeinen als 'lokaal' worden bestempeld staat in ''/etc/postfix/domains/local''. |
Daarna checkt Postfix of de inkomende mail naar een virtueel domein is gestuurd. Domeinen zoals turingslegacy.nl worden via een aliasmap herschreven, en de herschreven mail word van begins af aan verwerkt door Postfix. De virtuele domeinen staan in ''/etc/postfix/domains/virtual''. | Daarna checkt Postfix of de inkomende mail naar een virtueel domein is gestuurd. Domeinen zoals turingslegacy.nl worden via een aliasmap herschreven, en de herschreven mail word van begins af aan verwerkt door Postfix. De virtuele domeinen staan in ''/etc/postfix/domains/virtual''. | ||
Line 32: | Line 35: | ||
Als laatste checkt Postfix of de inkomende mail is gestuurd naar een domein waarvoor A-Eskwadraat mail relayed. Deze mail word onveranderd naar de mail-server van dit domein verstuurd (relaying). Dit voorkomt verlies van mail voor het externe domein wanneer hun mailserver uitvalt, aangezien A-Eskwadraat de secondary mailserver is voor dat domein. | Als laatste checkt Postfix of de inkomende mail is gestuurd naar een domein waarvoor A-Eskwadraat mail relayed. Deze mail word onveranderd naar de mail-server van dit domein verstuurd (relaying). Dit voorkomt verlies van mail voor het externe domein wanneer hun mailserver uitvalt, aangezien A-Eskwadraat de secondary mailserver is voor dat domein. | ||
− | Een uitzondering op de regel is mail bedoeld voor de webserver. Mail aan de webcie komt binnen op de mail server, maar moet worden doorgestuurd naar de webserver. De verwijzingen zijn te vinden in ''/etc/postfix/transport_www'' en ''/etc/postfix/transport_regex''. | + | Een uitzondering op de regel is mail bedoeld voor de webserver. Mail aan de webcie komt binnen op de mail server, maar moet worden doorgestuurd naar de webserver. De verwijzingen zijn te vinden in ''/etc/postfix/transport_www'' en ''/etc/postfix/transport_regex''. |
Let op dat deze uitleg heel erg bot is. Lees de relevante ''man'' pages van Postfix om te leren hoe mail word verwerkt. Let op dat veranderingen in een alias/transport/domain map niet worden opgemerkt tot het ''postmap'' of ''postalias'' op het bestand is aangeroepen! | Let op dat deze uitleg heel erg bot is. Lees de relevante ''man'' pages van Postfix om te leren hoe mail word verwerkt. Let op dat veranderingen in een alias/transport/domain map niet worden opgemerkt tot het ''postmap'' of ''postalias'' op het bestand is aangeroepen! | ||
Line 38: | Line 41: | ||
=== Mailfiltering === | === Mailfiltering === | ||
− | Postfix maakt gebruik van amavisd voor het filteren van de inkomende mail. Amavis is een interface voor SpamAssassin welke spam filtert en ClamAV welke mails op virussen scant. Check de configuratie op [[vm-saltmaster]] voor details. | + | Postfix maakt gebruik van amavisd voor het filteren van de inkomende mail. Amavis is een interface voor SpamAssassin welke spam filtert en ClamAV welke mails op virussen scant. Check de configuratie op [[Vm-saltmaster|vm-saltmaster]] voor details. |
Om de virus database up te daten: | Om de virus database up te daten: | ||
− | <pre> | + | <pre>freshclam |
− | freshclam | + | |
</pre> | </pre> | ||
== Mailman == | == Mailman == | ||
− | Mailman is verantwoordelijk voor de infrastructuur van de mailing lists. De mailing lists zijn te vinden op [lists.a-eskwadraat.nl/mailman lists.a-eskwadraat.nl/mailman]. Er zijn twee belangrijke services om mailman te draaien: mailman en httpd. | + | Mailman is verantwoordelijk voor de infrastructuur van de mailing lists. De mailing lists zijn te vinden op [lists.a-eskwadraat.nl/mailman lists.a-eskwadraat.nl/mailman]. Er zijn twee belangrijke services om mailman te draaien: mailman en httpd. De configuratie van mailman bevind zich in ''/etc/mailman/'', de data bevind zich in ''/var/lib/mailman'', en de binaries bevinden zich in ''/usr/lib/mailman''. |
− | De configuratie van mailman bevind zich in ''/etc/mailman/'', de data bevind zich in ''/var/lib/mailman'', en de binaries bevinden zich in ''/usr/lib/mailman''. | + | |
Gebruik de scripts in /usr/lib/mailman/bin om de mailing lists vanaf de command-line te wijzigen. De volgende commando's zijn belangrijk bij het debuggen / migreren van mailman: | Gebruik de scripts in /usr/lib/mailman/bin om de mailing lists vanaf de command-line te wijzigen. De volgende commando's zijn belangrijk bij het debuggen / migreren van mailman: | ||
− | |||
− | |||
− | |||
− | + | *check_perms: repareert de bestandsrechten van mailman-specifieke bestanden. | |
+ | *with_list & fix_url: repareert de links van de mailman archieven indien deze zijn veranderd. | ||
− | <pre> | + | Lees de [http://wiki.list.org/DOC/4.09%20Summary%20of%20the%20mailman%20bin%20commands MailmanWiki] voor een samenvatting van alle commands. |
− | postalias /etc/mailman/aliases | + | |
+ | Mailman werkt samen met de Postfix mailserver via de alias map ''/etc/mailman/aliases''. Voer het volgende commando uit na het toevoegen/verwijderen van een lijst zodat Postfix zijn alias database update: | ||
+ | <pre>postalias /etc/mailman/aliases | ||
</pre> | </pre> | ||
− | Na een migratie van de mailman lijsten is het belangrijk om ''restorecon'' uit te voeren op ''/var/lib/mailman''. | + | Na een migratie van de mailman lijsten is het belangrijk om ''restorecon'' uit te voeren op ''/var/lib/mailman''. Mailman en SELinux werken prima samen zolang de rechten maar goed staan. |
− | Mailman en SELinux werken prima samen zolang de rechten maar goed staan. | + | <pre># Samenvatting van een Mailman migratie. |
− | + | ||
− | <pre> | + | |
− | # Samenvatting van een Mailman migratie. | + | |
# Op de nieuwe mailserver. | # Op de nieuwe mailserver. | ||
rsync -azv -e "ssh -i <sshkey>" <OUDEHOST>:/var/lib/mailman/ /var/lib/mailman/ | rsync -azv -e "ssh -i <sshkey>" <OUDEHOST>:/var/lib/mailman/ /var/lib/mailman/ | ||
Line 73: | Line 71: | ||
bin/withlist -l -a -r fix_url | bin/withlist -l -a -r fix_url | ||
</pre> | </pre> | ||
+ | |||
+ | == Dovecot == | ||
+ | |||
+ | Dovecot is de IMAP server verantwoordelijk voor het ophalen en beheren van de mail opgeslagen in de homedirs. Mail wordt opgeslagen in de .Maildir van een gebruik zijn home directory. Momenteel is vm-mail de actieve IMAP server van A-Eskwadraat. De server luistert op poort 143 (standaard IMAP poort) en vereist een TLS-encrypted verbinding van de gebruiker. Het certificaat voor de verbinding is anders dan het certificaat van de webserver. Dovecot authenticeert gebruikers door middel van SASL-kerberos met de IPA servers. Dovecot werkt ook als authenticatie-server voor postfix door middel van een open socket. Een SELinux module is vereist om Postfix toegang te geven tot de socket. | ||
+ | |||
+ | Voor meer configuratie details, zie de configuratie op de salt-master. (CentOS 6: /srv/salt/centos/vm-mail/dovecot, CentOS 7: /srv/salt/centos7/dovecot) | ||
AL DEZE CONFIGURATIE IS GIGANTISCH OUT OF DATE | AL DEZE CONFIGURATIE IS GIGANTISCH OUT OF DATE | ||
== Configuratie mailfilters == | == Configuratie mailfilters == | ||
+ | |||
Gebruik je een ''.forward'' of ''.procmailrc'' om e-mail direct in mappen te stoppen, let dan op de naamgeving (zie hierboven) en zorg ervoor dat de mappen altijd op een ''/'' eindigen. Begin je ''.procmailrc'' ook altijd met de regel | Gebruik je een ''.forward'' of ''.procmailrc'' om e-mail direct in mappen te stoppen, let dan op de naamgeving (zie hierboven) en zorg ervoor dat de mappen altijd op een ''/'' eindigen. Begin je ''.procmailrc'' ook altijd met de regel | ||
+ | |||
MAILDIR=$HOME/Maildir/ | MAILDIR=$HOME/Maildir/ | ||
+ | |||
om te zorgen dat e-mail toch niet in ''/var/mail'' terechtkomt. | om te zorgen dat e-mail toch niet in ''/var/mail'' terechtkomt. | ||
== Maak een mailserver met exim, en dovecot == | == Maak een mailserver met exim, en dovecot == | ||
+ | |||
Zorg eerst dat sendmail uit staat! | Zorg eerst dat sendmail uit staat! | ||
− | <pre> | + | <pre>service sendmail stop |
− | service sendmail stop | + | |
chkconfig sendmail off | chkconfig sendmail off | ||
</pre> | </pre> | ||
− | Bij voorkeur verwijder je ook de package voor [[postfix]]. Deze is standaard bij CentOS geïnstalleerd. | + | |
+ | Bij voorkeur verwijder je ook de package voor [[Postfix|postfix]]. Deze is standaard bij CentOS geïnstalleerd. | ||
+ | |||
=== Exim === | === Exim === | ||
+ | |||
Exim is een MTA (Mail Transfer Agent) en is ervoor om mailtjes te versturen, ontvangen, en doorsturen. Dit gebeurd uiteraard op de mailserver! | Exim is een MTA (Mail Transfer Agent) en is ervoor om mailtjes te versturen, ontvangen, en doorsturen. Dit gebeurd uiteraard op de mailserver! | ||
− | Installeer allereerst exim op de host. | + | Installeer allereerst exim op de host. |
− | <pre> | + | <pre># yum install exim |
− | # yum install exim | + | |
</pre> | </pre> | ||
+ | |||
Verander vervolgens het configuratie bestand /etc/exim/exim.conf: | Verander vervolgens het configuratie bestand /etc/exim/exim.conf: | ||
− | <pre> | + | <pre># Het Mail domain - normaal gesproken a-eskwadraat.nl |
− | # Het Mail domain - normaal gesproken a-eskwadraat.nl | + | |
primary_hostname = circle.a-eskwadraat.nl | primary_hostname = circle.a-eskwadraat.nl | ||
Line 104: | Line 113: | ||
disable_ipv6 = true | disable_ipv6 = true | ||
− | daemon_smtp_ports = smtp : submission | + | daemon_smtp_ports = smtp : submission |
accept_8bitmime = true | accept_8bitmime = true | ||
Line 110: | Line 119: | ||
# Lijsten van geldige mail domainin. | # Lijsten van geldige mail domainin. | ||
domainlist mailman_domains = CONFDIR/domains.mailman | domainlist mailman_domains = CONFDIR/domains.mailman | ||
− | domainlist local_domains = @ : CONFDIR/domains.local : +mailman_domains : lsearch;CONFDIR/domains.virtual | + | domainlist local_domains = @ : CONFDIR/domains.local : +mailman_domains : lsearch;CONFDIR/domains.virtual |
domainlist relay_to_domains = CONFDIR/domains.relay | domainlist relay_to_domains = CONFDIR/domains.relay | ||
Line 135: | Line 144: | ||
host_lookup = * | host_lookup = * | ||
− | helo_try_verify_hosts = !@ : !@[] | + | helo_try_verify_hosts = !@ : !@[] |
helo_allow_chars = _ | helo_allow_chars = _ | ||
Line 152: | Line 161: | ||
=== Dovecot === | === Dovecot === | ||
− | Dovecot is een IMAP en POP3 server, wat inhoud dat het mailtjes kan ontvangen, iets wat best wel handig is om te hebben. | + | |
− | Installeer dovecot op je mailserver als je dat nog niet gedaan hebt. Verander dan nu het volgende: | + | Dovecot is een IMAP en POP3 server, wat inhoud dat het mailtjes kan ontvangen, iets wat best wel handig is om te hebben. Installeer dovecot op je mailserver als je dat nog niet gedaan hebt. Verander dan nu het volgende: |
In /etc/dovecot/dovecot.conf: | In /etc/dovecot/dovecot.conf: | ||
− | * protocols = imap | + | |
− | * login_trusted_networks = | + | *protocols = imap |
+ | *login_trusted_networks = <ip-adressen die je vertrouwd> | ||
+ | |||
In /etc/dovecot/conf.d/10-mail.conf | In /etc/dovecot/conf.d/10-mail.conf | ||
− | * mail_location = maildir:~/Maildir | + | |
− | * lock_method = dotlock | + | *mail_location = maildir:~/Maildir |
+ | *lock_method = dotlock | ||
+ | |||
In /etc/dovecot/conf.d/10-auth.conf | In /etc/dovecot/conf.d/10-auth.conf | ||
− | * disable_plaintext_auth = no | + | |
− | * auth_realms = aeskwadraat | + | *disable_plaintext_auth = no |
− | * auth_default_realm = aeskwadraat | + | *auth_realms = aeskwadraat |
− | * auth_gssapi_hostname = | + | *auth_default_realm = aeskwadraat |
− | * auth_krb5_keytab = /etc/dovecot/krb5.keytab | + | *auth_gssapi_hostname = <ipa-server> |
− | * auth_mechanisms = plain gssapi | + | *auth_krb5_keytab = /etc/dovecot/krb5.keytab |
+ | *auth_mechanisms = plain gssapi | ||
+ | |||
en zet op het einde | en zet op het einde | ||
− | <pre> | + | <pre>userdb { |
− | userdb { | + | |
driver = static | driver = static | ||
args = uid=dovecot gid=dovecot home=/var/spool/mail/%u | args = uid=dovecot gid=dovecot home=/var/spool/mail/%u | ||
} | } | ||
</pre> | </pre> | ||
+ | |||
Maak nu op de ipa-server een service imap aan met de mailserver als host. Dit kan je doen via de webinterface. Voer vervolgens het volgende uit op de mailserver: | Maak nu op de ipa-server een service imap aan met de mailserver als host. Dit kan je doen via de webinterface. Voer vervolgens het volgende uit op de mailserver: | ||
− | <pre> | + | <pre>kinit admin |
− | kinit admin | + | |
ipa-getkeytab -s <ipa-server> -p imap/<mailserver> -k /etc/dovecot/krb5.keytab | ipa-getkeytab -s <ipa-server> -p imap/<mailserver> -k /etc/dovecot/krb5.keytab | ||
chown root:dovecot /etc/dovecot/krb5.keytab | chown root:dovecot /etc/dovecot/krb5.keytab | ||
chmod 640 /etc/dovecot/krb5.keytab | chmod 640 /etc/dovecot/krb5.keytab | ||
</pre> | </pre> | ||
+ | |||
Restart dovecot en zet hem standaard aan: | Restart dovecot en zet hem standaard aan: | ||
− | <pre> | + | <pre>service dovecot restart |
− | service dovecot restart | + | |
chkconfig dovecot on | chkconfig dovecot on | ||
</pre> | </pre> | ||
− | Zet tenslotte nog met system-config-firewall-tui 'imap over ssl' en 'mail (smtp)' aan, | + | |
− | en voila! Je kan nu met ipa-users gebruik maken van IMAP om mailtjes te ontvangen! | + | Zet tenslotte nog met system-config-firewall-tui 'imap over ssl' en 'mail (smtp)' aan, en voila! Je kan nu met ipa-users gebruik maken van IMAP om mailtjes te ontvangen! |
Je kan eventueel in /etc/postfix/main.cf en /etc/dovecot/conf.d/10-mail.conf nog het een ander van waar de mail wordt opgeslagen veranderen. | Je kan eventueel in /etc/postfix/main.cf en /etc/dovecot/conf.d/10-mail.conf nog het een ander van waar de mail wordt opgeslagen veranderen. | ||
=== Spamassassin === | === Spamassassin === | ||
+ | |||
Spamassassin is een mailfilteringprogramma voor spam. Om het te installeren: | Spamassassin is een mailfilteringprogramma voor spam. Om het te installeren: | ||
− | <pre> | + | <pre>yum install spamassassin |
− | yum install spamassassin | + | |
</pre> | </pre> | ||
+ | |||
Maak nu de user en group spamd aan: | Maak nu de user en group spamd aan: | ||
− | <pre> | + | <pre>groupadd -g 5001 spamd |
− | groupadd -g 5001 spamd | + | |
useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin spamd | useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin spamd | ||
mkdir /var/lib/spamassassin | mkdir /var/lib/spamassassin | ||
chown spamd:spamd /var/lib/spamassassin | chown spamd:spamd /var/lib/spamassassin | ||
</pre> | </pre> | ||
+ | |||
Zet dan het volgende in /etc/mail/spamassassin/local.cf: | Zet dan het volgende in /etc/mail/spamassassin/local.cf: | ||
− | <pre> | + | <pre>required_score 5.0 |
− | required_score 5.0 | + | |
report_safe 0 | report_safe 0 | ||
rewrite_header Subject [***SPAM***] | rewrite_header Subject [***SPAM***] | ||
Line 216: | Line 230: | ||
bayes_auto_learn 1 | bayes_auto_learn 1 | ||
</pre> | </pre> | ||
+ | |||
Verander nu in /etc/postfix/master.cf | Verander nu in /etc/postfix/master.cf | ||
− | <pre> | + | <pre>smtp inet n - n - - smtpd |
− | smtp inet n - n - - smtpd | + | |
</pre> | </pre> | ||
+ | |||
in | in | ||
− | <pre> | + | <pre>smtp inet n - n - - smtpd -o content_filter=spamassassin |
− | smtp inet n - n - - smtpd -o content_filter=spamassassin | + | |
</pre> | </pre> | ||
+ | |||
en stop op het einde van master.cf: | en stop op het einde van master.cf: | ||
− | <pre> | + | <pre>spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient} |
− | spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient} | + | |
</pre> | </pre> | ||
+ | |||
Restart nu spamassassin en postfix: | Restart nu spamassassin en postfix: | ||
− | <pre> | + | <pre>chkconfig spamassassin on |
− | chkconfig spamassassin on | + | |
service spamassassin restart | service spamassassin restart | ||
service postfix restart | service postfix restart | ||
Line 236: | Line 250: | ||
=== Aliases === | === Aliases === | ||
− | In postfix staan de locaties van de aliases in /etc/postfix/main.cf. Deze kan je vinden bij de regel 'alias_maps = ...'. Als je een nieuw aliasbestand wilt toevoegen, voeg dit dan ook toe bij deze regel als hash: | + | |
+ | In postfix staan de locaties van de aliases in /etc/postfix/main.cf. Deze kan je vinden bij de regel 'alias_maps = ...'. Als je een nieuw aliasbestand wilt toevoegen, voeg dit dan ook toe bij deze regel als hash:<bestandslocatie>. Vergeet ook niet om dit toe te voegen bij alias_database!. | ||
De aliases zelf staan geconfigureerd in de aliasbestanden die te vinden zijn onder /etc/aesalias/. Nadat je een nieuw alias hebt toegevoegd moet je het commando 'newaliases' als root uitvoeren om de nieuwe alias(sen) te activeren. Hetzelfde moet je ook doen als je aliases weghaalt natuurlijk! | De aliases zelf staan geconfigureerd in de aliasbestanden die te vinden zijn onder /etc/aesalias/. Nadat je een nieuw alias hebt toegevoegd moet je het commando 'newaliases' als root uitvoeren om de nieuwe alias(sen) te activeren. Hetzelfde moet je ook doen als je aliases weghaalt natuurlijk! | ||
== Instellingen == | == Instellingen == | ||
+ | |||
=== Postfix === | === Postfix === | ||
+ | |||
==== Mail relay ==== | ==== Mail relay ==== | ||
+ | |||
Postfix kan mail relayen naar een extern domein. Hiervoor is de volgende regel: | Postfix kan mail relayen naar een extern domein. Hiervoor is de volgende regel: | ||
− | <pre> | + | <pre>relay_domains = $mydestination, hash:/etc/postfix/domains.relay |
− | relay_domains = $mydestination, hash:/etc/postfix/domains.relay | + | |
</pre> | </pre> | ||
− | In het bestand /etc/postfix/domains.relay staat de lijst van alle externe domains waar mail naar toe gerelayed wordt. Als je iets in het bestand wijzigt, vergeet dan niet om daarna het commando | + | |
− | <pre> | + | In het bestand /etc/postfix/domains.relay staat de lijst van alle externe domains waar mail naar toe gerelayed wordt. Als je iets in het bestand wijzigt, vergeet dan niet om daarna het commando |
− | postmap /etc/postfix/domains.relay | + | <pre>postmap /etc/postfix/domains.relay |
</pre> | </pre> | ||
+ | |||
uit te voeren. | uit te voeren. | ||
+ | |||
==== Whitelist ==== | ==== Whitelist ==== | ||
+ | |||
Postfix kan gebruik maken van een whitelist. Zorg hiervoor dat er het volgende in /etc/postfix/main.cf staat: | Postfix kan gebruik maken van een whitelist. Zorg hiervoor dat er het volgende in /etc/postfix/main.cf staat: | ||
− | <pre> | + | <pre>smtpd_client_restrictions = check_client_access hash:/etc/postfix/client.access |
− | smtpd_client_restrictions = check_client_access hash:/etc/postfix/client.access | + | |
</pre> | </pre> | ||
+ | |||
In het bestand /etc/postfix/client.access staat de lijst van alle domains die geweigerd en toegelaten worden. Als je hier iets in verandert, vergeet dan niet om uit te voeren | In het bestand /etc/postfix/client.access staat de lijst van alle domains die geweigerd en toegelaten worden. Als je hier iets in verandert, vergeet dan niet om uit te voeren | ||
− | <pre> | + | <pre>postmap /etc/postfix/access.client |
− | postmap /etc/postfix/access.client | + | |
</pre> | </pre> | ||
== SquirrelMail == | == SquirrelMail == | ||
+ | |||
SquirrelMail is een webmail-client. | SquirrelMail is een webmail-client. | ||
+ | |||
=== SquirrelMail installeren === | === SquirrelMail installeren === | ||
+ | |||
Installeer eerst natuurlijk Squirrelmail: | Installeer eerst natuurlijk Squirrelmail: | ||
− | <pre> | + | <pre>yum install squirrelmail |
− | yum install squirrelmail | + | |
</pre> | </pre> | ||
Zorg ervoor dat httpd standaard aan staat en start httpd: | Zorg ervoor dat httpd standaard aan staat en start httpd: | ||
− | <pre> | + | <pre>chkconfig httpd on |
− | chkconfig httpd on | + | |
service httpd start | service httpd start | ||
</pre> | </pre> | ||
+ | |||
Verander nu het volgende in /etc/squirrelmail/config.php: | Verander nu het volgende in /etc/squirrelmail/config.php: | ||
− | <pre> | + | <pre>$org_name = "A-Eskwadraat"; |
− | $org_name = "A-Eskwadraat"; | + | |
$org_logo = SM_PATH . 'images/sm_logo.png'; | $org_logo = SM_PATH . 'images/sm_logo.png'; | ||
$org_logo_width = '308'; | $org_logo_width = '308'; | ||
Line 291: | Line 311: | ||
</pre> | </pre> | ||
+ | |||
Zet nu het A-Eskwadraat logo in de squirrelmail config map. | Zet nu het A-Eskwadraat logo in de squirrelmail config map. | ||
− | <pre> | + | <pre>setsebool -P httpd_can_network_connect 1 |
− | setsebool -P httpd_can_network_connect 1 | + | |
</pre> | </pre> | ||
== RoundcubeMail == | == RoundcubeMail == | ||
+ | |||
Roundcube is ook een webmail client. | Roundcube is ook een webmail client. | ||
=== Installeren === | === Installeren === | ||
+ | |||
Op vm-salt-master staat een configuratie voor een Roundcube mail VM met een korte readme. Deze zorgt ervoor dat httpd, roundcubemail en mariadb geinstalleerd staan. Salt een VM met deze configuratie. | Op vm-salt-master staat een configuratie voor een Roundcube mail VM met een korte readme. Deze zorgt ervoor dat httpd, roundcubemail en mariadb geinstalleerd staan. Salt een VM met deze configuratie. | ||
− | <pre> | + | <pre>salt '$hostname' state.highstate |
− | salt '$hostname' state.highstate | + | |
</pre> | </pre> | ||
+ | |||
Laat vervolgens httpd van die VM door de firewall heen. Daarna moet de database voor Roundcube geinitialiseerd worden. Dit gaat met mysql. | Laat vervolgens httpd van die VM door de firewall heen. Daarna moet de database voor Roundcube geinitialiseerd worden. Dit gaat met mysql. | ||
− | <pre> | + | <pre>CREATE DATABASE roundcubemail; |
− | CREATE DATABASE roundcubemail; | + | |
GRANT ALL PRIVILEGES on roundcubemail.* TO roundcube@localhost IDENTIFIED BY '$password'; | GRANT ALL PRIVILEGES on roundcubemail.* TO roundcube@localhost IDENTIFIED BY '$password'; | ||
FLUSH PRIVILEGES; | FLUSH PRIVILEGES; | ||
</pre> | </pre> | ||
+ | |||
Nu moet de timezone nog even ingesteld worden in /etc/php.ini op de roundcube VM. Daarna moeten er nog de juiste tables in de database worden gezet. Dit kan door op de nieuwe VM de bestanden in /etc/roundcubemail/databasefiles te runnen met mysql. | Nu moet de timezone nog even ingesteld worden in /etc/php.ini op de roundcube VM. Daarna moeten er nog de juiste tables in de database worden gezet. Dit kan door op de nieuwe VM de bestanden in /etc/roundcubemail/databasefiles te runnen met mysql. | ||
− | <pre> | + | <pre>mysql roundcubemail < mysql.initial.sql |
− | mysql roundcubemail < mysql.initial.sql | + | |
</pre> | </pre> | ||
+ | [[Category:Sysop]] |
Revision as of 17:52, 30 September 2015
Bij A–Eskwadraat gebruiken we Maildir voor de opslag van e-mail. Hiervoor gebruikten we het mbox-formaat. We raden gebruikers aan om niet direct de Maildirmappen te benaderen, maar om dit via IMAP te doen. De standaardconfiguratie van de meeste mailclients staat hier ook voor ingesteld.
Contents
Services
Op haskell draait de virtuele machine vm-mail om het mailverkeer van en naar A-Eskwadraat te regelen:
- exim (/etc/exim4/) verwerkt in principe alle binnenkomende mails, en wat er waarheen doorgestuurd moet worden;
- dovecot (/etc/dovecot/) neemt de POP- en IMAP-servers voor zijn rekening;
- SpamAssassin (/etc/mail/spamassassin/) filtert het binnenkomende mailverkeer;
- ClamAV (/etc/clamd.d/) scant het mailverkeer voor virussen en dergelijke;
- SquirrelMail (/etc/squirrelmail/) is een webmail interface SquirrelMail draait in de webserver van vm-mail;
- Mailman (/etc/mailman/) Mailman is verantwoordelijk voor de mailing lists, zoals de BBCie-announce.
Naamgeving Maildirmappen
Let op dat om voor dovecot begrijpbare namen te hebben, de mappen op in ~/Maildir altijd met een punt moeten beginnen. Submappen werken ook op deze manier. Een paar voorbeelden:
- ~/Maildir/.Intro/ voor de IMAP-map Intro;
- ~/Maildir/.Sysop.postmaster/ voor de map postmaster als submap van Sysop.
Als de mappen via IMAP worden aangemaakt gebeurt dit automatisch.
Postfix
Postfix is de SMTP server voor de nieuwe mail server.
Postfix gebruikt meerdere ports om mail te ontvangen en te verwerken. Inkomende mail van leden moet naar de SMTP daemon op port 587 worden gestuurd. Authenticatie en TLS encryptie zijn een vereiste op deze verbinding. In de toekomst zal de Router de encryptie tussen client en mail-server regelen. Alle andere mail komt binnen op port 25. Spam- en virus-filtering gebeurd via de SMTP daemons op ports 10025 en 10027 voor onbekende en bekende mail, respectievelijk. Lees /etc/postfix/master.cf voor de configuratie van deze SMTP daemons.
Transport
Eerst checkt Postfix of de inkomende mail aan een lokaal mailadres is gestuurd. Vervolgens word het adres verandert aan de hand van de alias mappen in /etc/postfix/aliases. De mail word naar elke resulterende gebruiker gestuurd via de instellingen van hun .forward bestand. Welke domeinen als 'lokaal' worden bestempeld staat in /etc/postfix/domains/local.
Daarna checkt Postfix of de inkomende mail naar een virtueel domein is gestuurd. Domeinen zoals turingslegacy.nl worden via een aliasmap herschreven, en de herschreven mail word van begins af aan verwerkt door Postfix. De virtuele domeinen staan in /etc/postfix/domains/virtual.
Als laatste checkt Postfix of de inkomende mail is gestuurd naar een domein waarvoor A-Eskwadraat mail relayed. Deze mail word onveranderd naar de mail-server van dit domein verstuurd (relaying). Dit voorkomt verlies van mail voor het externe domein wanneer hun mailserver uitvalt, aangezien A-Eskwadraat de secondary mailserver is voor dat domein.
Een uitzondering op de regel is mail bedoeld voor de webserver. Mail aan de webcie komt binnen op de mail server, maar moet worden doorgestuurd naar de webserver. De verwijzingen zijn te vinden in /etc/postfix/transport_www en /etc/postfix/transport_regex.
Let op dat deze uitleg heel erg bot is. Lees de relevante man pages van Postfix om te leren hoe mail word verwerkt. Let op dat veranderingen in een alias/transport/domain map niet worden opgemerkt tot het postmap of postalias op het bestand is aangeroepen!
Mailfiltering
Postfix maakt gebruik van amavisd voor het filteren van de inkomende mail. Amavis is een interface voor SpamAssassin welke spam filtert en ClamAV welke mails op virussen scant. Check de configuratie op vm-saltmaster voor details.
Om de virus database up te daten:
freshclam
Mailman
Mailman is verantwoordelijk voor de infrastructuur van de mailing lists. De mailing lists zijn te vinden op [lists.a-eskwadraat.nl/mailman lists.a-eskwadraat.nl/mailman]. Er zijn twee belangrijke services om mailman te draaien: mailman en httpd. De configuratie van mailman bevind zich in /etc/mailman/, de data bevind zich in /var/lib/mailman, en de binaries bevinden zich in /usr/lib/mailman.
Gebruik de scripts in /usr/lib/mailman/bin om de mailing lists vanaf de command-line te wijzigen. De volgende commando's zijn belangrijk bij het debuggen / migreren van mailman:
- check_perms: repareert de bestandsrechten van mailman-specifieke bestanden.
- with_list & fix_url: repareert de links van de mailman archieven indien deze zijn veranderd.
Lees de MailmanWiki voor een samenvatting van alle commands.
Mailman werkt samen met de Postfix mailserver via de alias map /etc/mailman/aliases. Voer het volgende commando uit na het toevoegen/verwijderen van een lijst zodat Postfix zijn alias database update:
postalias /etc/mailman/aliases
Na een migratie van de mailman lijsten is het belangrijk om restorecon uit te voeren op /var/lib/mailman. Mailman en SELinux werken prima samen zolang de rechten maar goed staan.
# Samenvatting van een Mailman migratie. # Op de nieuwe mailserver. rsync -azv -e "ssh -i <sshkey>" <OUDEHOST>:/var/lib/mailman/ /var/lib/mailman/ restorecon -r /var/lib/mailman/ cd /usr/lib/mailman/ bin/check_perms -f bin/withlist -l -a -r fix_url
Dovecot
Dovecot is de IMAP server verantwoordelijk voor het ophalen en beheren van de mail opgeslagen in de homedirs. Mail wordt opgeslagen in de .Maildir van een gebruik zijn home directory. Momenteel is vm-mail de actieve IMAP server van A-Eskwadraat. De server luistert op poort 143 (standaard IMAP poort) en vereist een TLS-encrypted verbinding van de gebruiker. Het certificaat voor de verbinding is anders dan het certificaat van de webserver. Dovecot authenticeert gebruikers door middel van SASL-kerberos met de IPA servers. Dovecot werkt ook als authenticatie-server voor postfix door middel van een open socket. Een SELinux module is vereist om Postfix toegang te geven tot de socket.
Voor meer configuratie details, zie de configuratie op de salt-master. (CentOS 6: /srv/salt/centos/vm-mail/dovecot, CentOS 7: /srv/salt/centos7/dovecot)
AL DEZE CONFIGURATIE IS GIGANTISCH OUT OF DATE
Configuratie mailfilters
Gebruik je een .forward of .procmailrc om e-mail direct in mappen te stoppen, let dan op de naamgeving (zie hierboven) en zorg ervoor dat de mappen altijd op een / eindigen. Begin je .procmailrc ook altijd met de regel
MAILDIR=$HOME/Maildir/
om te zorgen dat e-mail toch niet in /var/mail terechtkomt.
Maak een mailserver met exim, en dovecot
Zorg eerst dat sendmail uit staat!
service sendmail stop chkconfig sendmail off
Bij voorkeur verwijder je ook de package voor postfix. Deze is standaard bij CentOS geïnstalleerd.
Exim
Exim is een MTA (Mail Transfer Agent) en is ervoor om mailtjes te versturen, ontvangen, en doorsturen. Dit gebeurd uiteraard op de mailserver!
Installeer allereerst exim op de host.
# yum install exim
Verander vervolgens het configuratie bestand /etc/exim/exim.conf:
# Het Mail domain - normaal gesproken a-eskwadraat.nl primary_hostname = circle.a-eskwadraat.nl # Weiger met ipv6 te werken. local_interfaces = 0.0.0.0 disable_ipv6 = true daemon_smtp_ports = smtp : submission accept_8bitmime = true # Lijsten van geldige mail domainin. domainlist mailman_domains = CONFDIR/domains.mailman domainlist local_domains = @ : CONFDIR/domains.local : +mailman_domains : lsearch;CONFDIR/domains.virtual domainlist relay_to_domains = CONFDIR/domains.relay hostlist relay_from_hosts = 10.14.3.0/22 # Backup mail server in het geval dat onze niet werkt. hostlist mx_hosts = mail.wolffelaar.nl qualify_domain = A-Eskwadraat.nl queue_run_max = 250 smtp_accept_max = 100 smtp_accept_max_per_host = ${if match_ip{$sender_host_address}{+mx_hosts}{50}{10}} received_headers_max = 30 RETRY_SECONDARY=F,90d,15m RETRY_REST=F,2h,15m; G,16h,2h,1.5; F,4d,8h acl_smtp_rcpt = acl_check_rcpt acl_not_smtp_start = acl_check_not_smtp acl_smtp_data = acl_check_data host_lookup = * helo_try_verify_hosts = !@ : !@[] helo_allow_chars = _ # ClamAV - The Anti-Virus Scanner av_scanner = clamd:/var/run/clamav/clamd.sock # Custom 5s limiet. rfc1413_query_timeout = 5s # Mailman support, als per /usr/share/doc/mailman/README.EXIM.gz MAILMAN_HOME=/var/lib/mailman MAILMAN_WRAP=/usr/lib/mailman/mail/mailman MAILMAN_USER=mailman MAILMAN_GROUP=mailman
Dovecot
Dovecot is een IMAP en POP3 server, wat inhoud dat het mailtjes kan ontvangen, iets wat best wel handig is om te hebben. Installeer dovecot op je mailserver als je dat nog niet gedaan hebt. Verander dan nu het volgende:
In /etc/dovecot/dovecot.conf:
- protocols = imap
- login_trusted_networks = <ip-adressen die je vertrouwd>
In /etc/dovecot/conf.d/10-mail.conf
- mail_location = maildir:~/Maildir
- lock_method = dotlock
In /etc/dovecot/conf.d/10-auth.conf
- disable_plaintext_auth = no
- auth_realms = aeskwadraat
- auth_default_realm = aeskwadraat
- auth_gssapi_hostname = <ipa-server>
- auth_krb5_keytab = /etc/dovecot/krb5.keytab
- auth_mechanisms = plain gssapi
en zet op het einde
userdb { driver = static args = uid=dovecot gid=dovecot home=/var/spool/mail/%u }
Maak nu op de ipa-server een service imap aan met de mailserver als host. Dit kan je doen via de webinterface. Voer vervolgens het volgende uit op de mailserver:
kinit admin ipa-getkeytab -s <ipa-server> -p imap/<mailserver> -k /etc/dovecot/krb5.keytab chown root:dovecot /etc/dovecot/krb5.keytab chmod 640 /etc/dovecot/krb5.keytab
Restart dovecot en zet hem standaard aan:
service dovecot restart chkconfig dovecot on
Zet tenslotte nog met system-config-firewall-tui 'imap over ssl' en 'mail (smtp)' aan, en voila! Je kan nu met ipa-users gebruik maken van IMAP om mailtjes te ontvangen!
Je kan eventueel in /etc/postfix/main.cf en /etc/dovecot/conf.d/10-mail.conf nog het een ander van waar de mail wordt opgeslagen veranderen.
Spamassassin
Spamassassin is een mailfilteringprogramma voor spam. Om het te installeren:
yum install spamassassin
Maak nu de user en group spamd aan:
groupadd -g 5001 spamd useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin spamd mkdir /var/lib/spamassassin chown spamd:spamd /var/lib/spamassassin
Zet dan het volgende in /etc/mail/spamassassin/local.cf:
required_score 5.0 report_safe 0 rewrite_header Subject [***SPAM***] # Enable the Bayes system use_bayes 1 use_bayes_rules 1 # Enable Bayes auto-learning bayes_auto_learn 1
Verander nu in /etc/postfix/master.cf
smtp inet n - n - - smtpd
in
smtp inet n - n - - smtpd -o content_filter=spamassassin
en stop op het einde van master.cf:
spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Restart nu spamassassin en postfix:
chkconfig spamassassin on service spamassassin restart service postfix restart
Aliases
In postfix staan de locaties van de aliases in /etc/postfix/main.cf. Deze kan je vinden bij de regel 'alias_maps = ...'. Als je een nieuw aliasbestand wilt toevoegen, voeg dit dan ook toe bij deze regel als hash:<bestandslocatie>. Vergeet ook niet om dit toe te voegen bij alias_database!.
De aliases zelf staan geconfigureerd in de aliasbestanden die te vinden zijn onder /etc/aesalias/. Nadat je een nieuw alias hebt toegevoegd moet je het commando 'newaliases' als root uitvoeren om de nieuwe alias(sen) te activeren. Hetzelfde moet je ook doen als je aliases weghaalt natuurlijk!
Instellingen
Postfix
Mail relay
Postfix kan mail relayen naar een extern domein. Hiervoor is de volgende regel:
relay_domains = $mydestination, hash:/etc/postfix/domains.relay
In het bestand /etc/postfix/domains.relay staat de lijst van alle externe domains waar mail naar toe gerelayed wordt. Als je iets in het bestand wijzigt, vergeet dan niet om daarna het commando
postmap /etc/postfix/domains.relay
uit te voeren.
Whitelist
Postfix kan gebruik maken van een whitelist. Zorg hiervoor dat er het volgende in /etc/postfix/main.cf staat:
smtpd_client_restrictions = check_client_access hash:/etc/postfix/client.access
In het bestand /etc/postfix/client.access staat de lijst van alle domains die geweigerd en toegelaten worden. Als je hier iets in verandert, vergeet dan niet om uit te voeren
postmap /etc/postfix/access.client
SquirrelMail
SquirrelMail is een webmail-client.
SquirrelMail installeren
Installeer eerst natuurlijk Squirrelmail:
yum install squirrelmail
Zorg ervoor dat httpd standaard aan staat en start httpd:
chkconfig httpd on service httpd start
Verander nu het volgende in /etc/squirrelmail/config.php:
$org_name = "A-Eskwadraat"; $org_logo = SM_PATH . 'images/sm_logo.png'; $org_logo_width = '308'; $org_logo_height = '111'; $org_title = 'A-Eskwadraat SquirrelMail $version"; $signout_page = 'vm-mail.a-eskwadraat.nl'; $domain = 'circle.a-eskwadraat.nl'; $imapServerAddress = 'localhost'; $useSendmail = false; $smtpServerAddress = 'localhost'; $pop_before_smtp = false;
Zet nu het A-Eskwadraat logo in de squirrelmail config map.
setsebool -P httpd_can_network_connect 1
RoundcubeMail
Roundcube is ook een webmail client.
Installeren
Op vm-salt-master staat een configuratie voor een Roundcube mail VM met een korte readme. Deze zorgt ervoor dat httpd, roundcubemail en mariadb geinstalleerd staan. Salt een VM met deze configuratie.
salt '$hostname' state.highstate
Laat vervolgens httpd van die VM door de firewall heen. Daarna moet de database voor Roundcube geinitialiseerd worden. Dit gaat met mysql.
CREATE DATABASE roundcubemail; GRANT ALL PRIVILEGES on roundcubemail.* TO roundcube@localhost IDENTIFIED BY '$password'; FLUSH PRIVILEGES;
Nu moet de timezone nog even ingesteld worden in /etc/php.ini op de roundcube VM. Daarna moeten er nog de juiste tables in de database worden gezet. Dit kan door op de nieuwe VM de bestanden in /etc/roundcubemail/databasefiles te runnen met mysql.
mysql roundcubemail < mysql.initial.sql