Mail

From A-Eskwiki
Revision as of 22:26, 21 January 2015 by Wdenbesten (Talk | contribs)

Jump to: navigation, search

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.

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.

Transport

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.

Na een wijziging in /etc/postfix/transport_www moet de database worden herbouwd:

postmap /etc/postfix/transport_www

Testen of een regex/regel goed werkt kan met:

postmap -q mailadres /etc/postfix/transport_*

Lees man transport en man pcre_table om meer te leren over deze tools.

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


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

Mailman

Mailman onderhoudt mailinglijsten zoals de jarigen-lijst en de IBA-lijst.

Mailman installeren

Installeer Mailman en httpd (als die als niet geinstalleerd zijn):

yum install mailman httpd

Uncomment de laatste regel van /etc/httpd/conf.s/mailman.conf:

  • RedirectMatch ^/mailman[/]*$ /mailman/listinfo

Zet een wachtwoord voor de admin van de mailmansite:

/etc/lib/mailman/bin/mmsitepass

Verander de volgende twee regels in /usr/lib/mailman/Mailman/mm_cfg.py

  • DEFAULT_URL_HOST = '<mailserver-domain>'
  • DEFAULT_EMAIL_HOST = '<mailserver-domain>'

Check voor updates:

/etc/lib/mailman/bin/update

Zet alle permissies goed:

/etc/lib/mailman/bin/check_perms -f

Maak de mailman-mailing-list:

/etc/lib/mailman/bin/newlist mailman

Voeg geen regels toe aan /etc/aliases, aangezien exim deze automatisch herkent. Tenslotte, restart httpd en start mailman:

service httpd restart
service mailman start
chkconfig httpd on
chkconfig mailman on

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