Installation d’un serveur Ubuntu #2

Installation d’un serveur Ubuntu #2

Je suis en train de re installer un serveur à la maison pour pouvoir migré en douceur ma vieillissante machine sous Debian 5.

J’ai choisi une Ubuntu 9.10 édition serveur. Ce billet va traité la partie messagerie du serveur.

Il fait suite à : Installation d’un serveur Ubuntu #1 ou je traitais des services Web.

État des lieux.

  • Le serveur héberge les boites mails de plusieurs domaines.
  • Il y’a des alias / redirection.
  • Dspam joue le rôle d’antispam.
  • Postgrey se charge de faire du Greylisting.
  • Les boites mails sont toutes dans : /var/spool/vmail/domaine.tld/mailbox
  • Les services POP et IMAP sont gérés par Dovecot.
  • Il n’y a pas de SSL disponible, ce serveur de messagerie est on ne peut plus simpliste !

Préparation de la base de données

Le but de cette étape est de préparer la base de données qui va servir à gérer notre messagerie. Il y’a 3 tables :

  • domain
  • mailbox
  • alias
CREATE TABLE IF NOT EXISTS `alias` (
  `source` varchar(255) NOT NULL DEFAULT '',
  `destination` text NOT NULL,
  `actif` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`source`)
) 

CREATE TABLE IF NOT EXISTS `domain` (
  `domain` varchar(255) NOT NULL DEFAULT '',
  `actif` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`domain`)
)

CREATE TABLE IF NOT EXISTS `mailbox` (
  `email` varchar(255) NOT NULL DEFAULT '',
  `password` varchar(255) NOT NULL DEFAULT '',
  `quota` int(10) NOT NULL DEFAULT '0',
  `actif` tinyint(1) NOT NULL DEFAULT '1',
  `imap` tinyint(1) NOT NULL DEFAULT '1',
  `pop3` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`email`)
)

Installation de Postfix

sudo apt-get install postfix postfix-mysql

L’utilisateur vmail et le groupe vmail seront utilisé pour les droits sur les répertoires des boites mails, on leur donne comme UID et GID 5000.

sudo useradd -d /var/spool/vmail -u 5000 vmail
sudo groupadd -g 5000 vmail
sudo usermod -g vmail vmail

Une fois l’installation de Postfix faite on va commencer à le configurer :
Le répertoire de configuration est /etc/postfix, il y’a deux fichiers qui sont master.cf et main.cf. Il y’a aussi les fichiers de configuration mysql.

# mysql-virtual_domains.cf
hosts = 127.0.0.1
user = postfix
password = pass
dbname = postfix
select_field = 'virtual'
table = domain
where_field = domain
additional_conditions = AND actif=1

# mysql-virtual_mailboxes.cf
hosts = 127.0.0.1
user = postfix
password = pass
dbname = postfix
select_field = CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
table = mailbox
where_field = email
additional_conditions = AND actif=1

# mysql-virtual_aliases.cf
hosts = 127.0.0.1
user = postfix
password = pass
dbname = postfix
select_field = destination
table = alias
where_field = source
additional_conditions = AND actif=1

# mysql-virtual_aliases_mailbox.cf
hosts = 127.0.0.1
user = postfix
password = pass
dbname = postfix
select_field = email
table = mailbox
where_field = email
additional_conditions = AND actif=1

Laissons le fichier master.cf dans sa version par défaut nous feront des modifications au moment de l’installation de l’antispam.

# /etc/postfix/main.cf

smtpd_banner = $myhostname ESMTP (Debian/GNU)
biff = no
disable_vrfy_command = yes
smtpd_helo_required = yes

mydomain = domaine.tld
append_dot_mydomain = yes

myhostname = domaine.tld

mydestination = localhost, localhost.localdomain

# Mettez ici le relais smtp de votre FAI
relayhost = smtp.free.fr

mynetworks = 127.0.0.0/8 192.168.0.0/24
inet_interfaces = all

smtpd_sender_restrictions =
        permit_mynetworks,
        warn_if_reject reject_unverified_sender

smtpd_recipient_restrictions =
        permit_mynetworks,
        reject_unauth_destination,
        reject_unknown_recipient_domain,
        reject_non_fqdn_recipient,

smtpd_client_restrictions =
        permit_mynetworks

virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_aliases.cf,mysql:/etc/postfix/mysql-virtual_aliases_mailbox.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /var/spool/vmail/
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

On redémarre postfix et c’est partie !

sudo /etc/init.d/postfix restart

Postgrey

Parce que Postfix c’est bien mais avec Postgrey c’est mieux !
Postgrey est un serveur de Greylisting, késako le Greylisting ? Et bien simplement le Greylisting bloque tous les mails entrants au moins une fois. En général un serveur de mail réémet son message si il reçoit une erreur compréhensible lors de la première émission, par contre un robot spammeur ne réémet que très rarement. Le Greylisting permet donc de supprimer naturellement beaucoup de SPAM !

sudo apt-get install postgrey
# /etc/default/postgrey
POSTGREY_OPTS="--inet=60000"

# /etc/postfix/main.cf
smtpd_recipient_restrictions =
        permit_mynetworks,
        reject_unauth_destination,
        reject_unknown_recipient_domain,
        reject_non_fqdn_recipient,
        check_policy_service inet:127.0.0.1:60000
sudo /etc/init.d/postfix restart && sudo /etc/init.d/postgrey restart


Maintenant les mails sont « greylistés« 

Antispam

Nous allons utiliser Spamassassin pour analyser les courriels et les tagger si il s’agit de SPAM.

sudo apt-get install spamassassin

La configuration de Postfix pour utiliser Spamassassin se fait dans le fichier /etc/postfix/master.cf

# remplacer la ligne 
smtp      inet  n       -       -       -       -       smtpd
# par la ligne 
smtp      inet  n       -       -       -       -       smtpd
        -o content_filter=spamassassin
# a la fin du fichier 
spamassassin unix -     n       n       -       -       pipe
        user=spamd argv=/usr/bin/spamc -f -e
        /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Puis on redémarre Postfix

sudo /etc/init.d/postfix restart

On test maintenant !
Envoyer vous un mail avec dans le corps du message cette chaine de caractère :

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Avec cette chaine le mail sera automatiquement détecté comme SPAM, cela permet de vérifier que Spamassassin fonctionne correctement.

0 Partages

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.