Close

Installation d’un serveur de mail : Postfix + POP3/IMAP4 + MySQL

Notes Préliminaires

Le tutoriel est basé sur une Debian Etch Wheezy Squeeze Wheezy – stable. Il faut avant de continuer ce tutoriel, vérifier que vous avez à votre disposition une Debian disposant d’une installation standard et basique avec Apache, PHP5, MySQL et phpMyAdmin déjà installé, configuré et fonctionnel sur la machine.

Le système est configuré pour utiliser une adresse IP statique. J’utiliserais par la suite : 217.70.178.216 comme adresse IP et mx.enguehard.info comme nom de domaine.

Installer Postfix, Courier, Saslauthd

apt-get install postfix postfix-mysql postfix-doc courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl fam libfam0 php5-mcrypt

On dois répondre à quelques questions :

Type de configuration :
Site Internet

Nom de courrier :
mx.enguehard.info

Faut-il créer les répertoires nécessaires à l’administration web ?
Non

Base de données

Créer rapidement un utilisateur root avec le mot de passe gntmmjgqncly

mysql -u root -p
CREATE USER 'root'@'%' IDENTIFIED BY  'gntmmjgqncly';
GRANT ALL PRIVILEGES ON * . * TO  'root'@'%' IDENTIFIED BY  'gntmmjgqncly' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
GRANT ALL PRIVILEGES ON  `root\_%` . * TO  'root'@'%';
FLUSH PRIVILEGES;

Création de la base de Données MySQL pour les paquets Postfix et Courier :

mysqladmin -u root -p create gestion

Ensuite on va sur le shell de MySQL :

mysql -u root -p

On créer un utilisateur nommé gestion avec le mot de passe gestion_password avec les droits nécessaires pour utiliser les tables dans la base gestion. Cet utilisateur sera utilisé par Postfix et Courrier pour se connecter à la base de données.

GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'gestion'@'localhost' IDENTIFIED BY 'gntmmjgqncly';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'gestion'@'localhost.localdomain' IDENTIFIED BY 'gntmmjgqncly';
FLUSH PRIVILEGES;

Ensuite on créer, les bases de données dont Postfix et Courier vont avoir besoin :

USE gestion;
CREATE TABLE domains (
domain varchar(50) NOT NULL,
PRIMARY KEY (domain) );

CREATE TABLE forwardings (
source varchar(80) NOT NULL,
destination TEXT NOT NULL,
PRIMARY KEY (source) );

CREATE TABLE IF NOT EXISTS `relay` (
  `domain` varchar(50) NOT NULL,
  PRIMARY KEY (`domain`)
);

CREATE TABLE users (
email varchar(80) NOT NULL,
password varchar(20) NOT NULL,
quota INT(10) DEFAULT '10485760',
PRIMARY KEY (email)
);

CREATE TABLE transport (
domain varchar(128) NOT NULL default '',
transport varchar(128) NOT NULL default '',
UNIQUE KEY domain (domain)
);

quit;

On est de retour sur le shell Linux.

La table domains stocke chaque domaine virtuel dont Postfix recevra le courrier.(e.g. example.com).

La table forwardings donne la liste des alias. Par exemple, forward les mails de info@example.com vers sales@example.com

La table users stocke tous les utilisateurs virtuels et les mots de passe (encryptés) et les quotas de chaque boîte mail. (dans l’exemple, la valeur par défaut est de 10485760 octets qui correspondant à 10 Mo).

La table optionnelle transport est à utiliser pour les utilisateurs avancés. Il permet de transférer les mails d’un utilisateur, d’un domaine entier ou tous les mails vers un autre serveur. Exemple :

Cet exemple transfère tous les email de example.com via le protocole SMTP vers le serveur ayant l’adresse IP 1.2.3.4 (les crochets indique de ne pas chercher un enregistrement MX dans le DNS ce qui n’aurait pas de sens sur une adresse IP…). Si on utiliser un nom de domaine pleinement qualifié, il ne faut pas utiliser les crochets.

La table relay donne la liste des domaines relayés. A utiliser principalement sur un serveur secondaire.

Configurer Postfix

Modifions les 7 fichiers de configuration relatif à la base de données MySQL

# cat /etc/postfix/mysql-virtual_domains.cf
user = gestion
password = gntmmjgqncly
dbname = gestion
query = SELECT domain AS virtual FROM domains WHERE domain='%s'
hosts = 127.0.0.1

# cat /etc/postfix/mysql-virtual_forwardings.cf
user = gestion
password = gntmmjgqncly
dbname = gestion
query = SELECT destination FROM forwardings WHERE source='%s'
hosts = 127.0.0.1

# cat /etc/postfix/mysql-virtual_mailboxes.cf
user = mail_admin
password = gntmmjgqncly
dbname = mail
query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s'
hosts = 127.0.0.1

# cat /etc/postfix/mysql-virtual_email2email.cf
user = gestion
password = gntmmjgqncly
dbname = gestion
query = SELECT email FROM users WHERE email='%s'
hosts = 127.0.0.1

# cat /etc/postfix/mysql-virtual_transports.cf
user = gestion
password = gntmmjgqncly
dbname = gestion
query = SELECT transport FROM transport WHERE domain='%s'
hosts = 127.0.0.1

#cat /etc/postfix/mysql-virtual_mailbox_limit_maps.cf
user = gestion
password = gntmmjgqncly
dbname = mail
query = SELECT quota FROM users WHERE email='%s'
hosts = 127.0.0.1

#cat /etc/postfix/mysql-relay.cf
user = gestion
password = gntmmjgqncly
dbname = gestion
query = SELECT domain FROM relay WHERE domain='%s'
hosts = 127.0.0.1

On change les permissions sur le groupe de fichiers crées :

#chmod o= /etc/postfix/mysql-virtual_*.cf
#chgrp postfix /etc/postfix/mysql-virtual_*.cf

Maintenant on crée un utilisateur et un groupe nommé vmail vmail avec le home positionné sur /home/vmail. C’est l’emplacement ou seront stockés toutes les boîtes e-mails.

# groupadd -g 5000 vmail
# useradd -g vmail -u 5000 vmail -d /home/vmail -m

Modifions la configuration de Postfix. N’oubliez pas de remplacer server1.example.com par un nom de domaine valide ; sinon Postfix ne pourra pas tourner correctement.

# postconf -e 'myhostname = server1.example.com'
# postconf -e 'mydestination = server1.example.com, localhost, localhost.localdomain'
# postconf -e 'mynetworks = 127.0.0.0/8'
# postconf -e 'virtual_alias_domains ='
# postconf -e 'virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf'
# postconf -e 'virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf'
# postconf -e 'virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf'
# postconf -e 'virtual_mailbox_base = /home/vmail'
# postconf -e 'virtual_uid_maps = static:5000'
# postconf -e 'virtual_gid_maps = static:5000'
# postconf -e 'smtpd_sasl_auth_enable = yes'
# postconf -e 'broken_sasl_auth_clients = yes'
# postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination'
# postconf -e 'smtpd_use_tls = yes'
# postconf -e 'smtpd_tls_cert_file = /etc/postfix/smtpd.cert'
# postconf -e 'smtpd_tls_key_file = /etc/postfix/smtpd.key'
# postconf -e 'transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf'
# postconf -e 'virtual_create_maildirsize = yes'
# postconf -e 'virtual_mailbox_extended = yes'
# postconf -e 'virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf'
# postconf -e 'virtual_mailbox_limit_override = yes'
# postconf -e 'virtual_maildir_limit_message = "The user you are trying to reach is over quota."'
# postconf -e 'virtual_overquota_bounce = yes'
# postconf -e 'proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps'
# postconf -e 'relay_domains = proxy:mysql:/etc/postfix/mysql-virtual_relay.cf'

Création du certificat SSL dont on a besoin pour le TLS :

# cd /etc/postfix
# openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509
Country Name (2 letter code) [AU]: FR
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []: WEB
Common Name (eg, YOUR name) []: server1.example.com
Email Address []: webmaster@server1.example.com

On change la permission sur certificat smtp.key :

# chmod o= /etc/postfix/smtpd.key

Configurer Saslauthd

Premièrement, créer le répertoire :

mkdir -p /var/spool/postfix/var/run/saslauthd

Ajouter l’utilisateur sasl à l’utilisateur postfix

adduser postfix sasl

Ensuite éditer /etc/default/saslauthd. Mettre START à yes et changer la ligne

OPTIONS="-c" en OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r" :
# cat /etc/default/saslauthd
#
# Settings for saslauthd daemon
#

# Should saslauthd run automatically on startup? (default: no)
START=yes

# Which authentication mechanisms should saslauthd use? (default: pam)
#
# Available options in this Debian package:
# getpwent  -- use the getpwent() library function
# kerberos5 -- use Kerberos 5
# pam       -- use PAM
# rimap     -- use a remote IMAP server
# shadow    -- use the local shadow password file
# sasldb    -- use the local sasldb database file
# ldap      -- use LDAP (configuration is in /etc/saslauthd.conf)

# Only one option may be used at a time. See the saslauthd man page
# for more information.
#
# Example: MECHANISMS="pam"
MECHANISMS="pam"

# Additional options for this mechanism. (default: none)
# See the saslauthd man page for information about mech-specific options.
MECH_OPTIONS=""

# How many saslauthd processes should we run? (default: 5)
# A value of 0 will fork a new process for each connection.
THREADS=5

# Other options (default: -c)
# See the saslauthd man page for information about these options.
#
# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
# Note: See /usr/share/doc/sasl2-bin/README.Debian
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

Ensuite créer le fichier /etc/pam.d/smtp. Il dois contenir ces 2 lignes (vérifiez qu’ils contiennent bien le bon utilisateur et mot de passe MySQL)

# cat /etc/pam.d/smtp
auth    required   pam_mysql.so user=gestion passwd=gntmmjgqncly host=127.0.0.1 db=gestion table=users usercolumn=email passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=gestion passwd=gntmmjgqncly host=127.0.0.1 db=gestion table=users usercolumn=email passwdcolumn=password crypt=1

Ensuite il faut créer un fichier /etc/postfix/sasl/smtpd.conf comme suit (modifier les informations MySQL) :

# cat /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
#auxprop_plugin: mysql #avant la version 7
sql_hostnames: 127.0.0.1
sql_user: gestion
sql_passwd: gntmmjgqncly
sql_database: gestion
sql_select: select password from users where email = '%u'

Il faut ensuite redémarrer Postfix et Saslauthd :

# /etc/init.d/postfix restart
# /etc/init.d/saslauthd restart

Lancer postfix check afin de vérifier les erreurs et les warnings.

# postfix check

Si vous avez des paramètres inutilisés, vous pouvez les commenter directement dans le fichier /etc/main.cf

Remarque : Le service étant chrooter dans le répertoire /var/spool/postfix ; la commande “testsaslauthd -u tata-gisele@enguehard.info -p acfgmnortuwx” doit retourner : “connect() : No such file or directory”

Configurer Courier

Dans un premier temps, il faut que le serveur Courier s’identifie à la base de donnée MySQL. Éditons le fichier /etc/courier/authdaemonrc pour modifier la variable authmodulelist qui indique la façon dont s’identifie le serveur.

# cat /etc/courier/authdaemonrc
[...]
authmodulelist="authmysql"
[...]

Ensuite faisons, une copie de sauvegarde (on ne sais jamais ; n’est ce pas Vincent 😉 )

# cp /etc/courier/authmysqlrc /etc/courier/authmysqlrc_orig
# cat /dev/null > /etc/courier/authmysqlrc

Ouvrir le fichier /etc/courier/authmysqlr pour y mettre les lignes suivantes (pensez à modifier les infos de MySQL) :

# cat /etc/courier/authmysqlrc
MYSQL_SERVER localhost
MYSQL_USERNAME gestion
MYSQL_PASSWORD gntmmjgqncly
MYSQL_PORT 0
MYSQL_DATABASE gestion
MYSQL_USER_TABLE users
MYSQL_CRYPT_PWFIELD password
#MYSQL_CLEAR_PWFIELD password
MYSQL_UID_FIELD 5000
MYSQL_GID_FIELD 5000
MYSQL_LOGIN_FIELD email
MYSQL_HOME_FIELD "/home/vmail"
MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
#MYSQL_NAME_FIELD
MYSQL_QUOTA_FIELD quota

Ensuite redémarrer tous les serveurs (pop, popssl, imap, auth, pop-ssl) courier :

# /etc/init.d/courier-authdaemon restart
# /etc/init.d/courier-imap restart
# /etc/init.d/courier-imap-ssl restart
# /etc/init.d/courier-pop restart
# /etc/init.d/courier-pop-ssl restart

Vérifier le bon fonctionnement en lançant :

# telnet localhost pop3

Vous devriez vous connecter au shell POP3 du serveur courier. Il dois indiquer +OK. Tapez quit pour quitter le shell.

# telnet localhost pop3
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
Quit
+OK Better luck next time.
Connection closed by foreign host.

Modifier le fichier /etc/aliases

Maintenant éditons le fichier /etc/aliases. Vérifiez que postmaster pointe bien sur root et que root sur votre nom d’utilisateur ou une adresse email.

# cat /etc/aliases
[...]
postmaster: root
root: postmaster@yourdomain.tld
[...]

Ensuite il faut mettre à jour les aliases en tapant la commande :

# newaliases

Ensuite pour prendre en compte toutes les modifications, il faut redémarrer postfix :

# /etc/init.d/postfix restart

Installer amavisd-new, SpamAssassin et ClamAV

Pour installer tous les paquets, il faut lancer la commande suivante :

# aptitude install amavisd-new spamassassin perl-base clamav clamav-daemon zoo unzip bzip2 libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop pax unrar-free rpm2cpio p7zip arj cabextract

Après l’installation, nous devons configurer amavisd-new. La configuration est séparé dans plusieurs fichiers qui sont dans le répertoire /etc/amavis/conf.d/.

Modifions le fichier /etc/amavis/conf.d/15-content_filter_mode en dé-commentant @bypass_virus_checks_maps et la ligne @bypass_spam_checks_maps:

# cat /etc/amavis/conf.d/15-content_filter_mode
use strict;

# You can modify this file to re-enable SPAM checking through spamassassin
# and to re-enable antivirus checking.

#
# Default antivirus checking mode
# Uncomment the two lines below to enable it back
#

@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, $bypass_virus_checks_re);

#
# Default SPAM checking mode
# Uncomment the two lines below to enable it back
#

@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, $bypass_spam_checks_re);

1;  # insure a defined return

Ensuite éditons le fichier /etc/amavis/conf.d/50-user pour ajouter la ligne $pax=’pax’; dans le milieu du fichier :

# cat /etc/amavis/conf.d/50-user
use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$pax='pax';

#------------ Do not modify anything below this line -------------
1;  # insure a defined return

Après ces modifications, il faut ajouter l’utilisateur clamav au groupe amavis. et redémarrer les serveurs Amavis et ClamAV :

# adduser clamav amavis
# /usr/bin/freshclam
# /etc/init.d/amavis restart
# /etc/init.d/clamav-daemon restart
# /etc/init.d/clamav-freshclam restart

Configurons maintenant Postfix afin qu’il passe les emails entrants à amavis-newd :

# postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
# postconf -e 'receive_override_options = no_address_mappings'

Ajoutons les lignes de configuration d’amavis dans les fichiers de configuration de Postfix :

# cat /etc/postfix/master.cf
[...]
amavis unix - - - - 2 smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_client_restrictions=
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks=127.0.0.0/8
        -o strict_rfc821_envelopes=yes
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks

Et redémarrons Postfix :

# /etc/init.d/postfix restart

Vérifions que tous les services sont lancés en tapant la commande :

# netstat -tap

On devrait voir Postfix écouter sur le port 25 (smtp) et sur le port 100025 et amavisd-new sur le port 100024

# netstat -tap
Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat PID/Program name
[...]
tcp        0      0 localhost:10024         *:*                     LISTEN 16820/amavisd (mast
tcp        0      0 localhost:10025         *:*                     LISTEN 17215/master
tcp        0      0 localhost:mysql         *:*                     LISTEN 3858/mysqld
tcp        0      0 *:auth                  *:*                     LISTEN 2231/inetd
tcp        0      0 *:smtp                  *:*                     LISTEN 17215/master
tcp6       0      0 *:imaps                 *:*                     LISTEN 14729/couriertcpd
tcp6       0      0 *:pop3s                 *:*                     LISTEN 14758/couriertcpd
tcp6       0      0 *:pop3                  *:*                     LISTEN 14739/couriertcpd
tcp6       0      0 *:imap2                 *:*                     LISTEN 14712/couriertcpd
tcp6       0      0 *:www                   *:*                     LISTEN 6017/apache2
tcp6       0      0 *:ssh                   *:*                     LISTEN 2259/sshd

Installer Razor, Pyzor, DCC et configurer SpamAssassin

Razor, Pyzor et DCC sont des filtres anti-spams qui utilise des filtres collaboratifs. Pour installer ces paquets :

# aptitude install razor pyzor dcc-client

Indiquons à SpamAssassin d’utiliser ces programmes en éditant le fichier /etc/spamassassin/local.cf et en rajoutant les lignes suivantes :

# cat /etc/spamassassin/local.cf
[...]

# dcc
use_dcc 1
dcc_path /usr/bin/dccproc
dcc_add_header 1
dcc_dccifd_path /usr/sbin/dccifd

#pyzor
use_pyzor 1
pyzor_path /usr/bin/pyzor
pyzor_add_header 1

#razor
use_razor2 1
razor_config /etc/razor/razor-agent.conf

#bayes
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
Pour prendre en compte les changements, il conviens de redémarrer amavisd-new :
# /etc/init.d/amavis restart

Notifications de dépassements de Quota

Si l’on souhaite recevoir des notifications de dépassements de quota, il faut rajouter un script.

# cd /usr/local/sbin/
# wget http://puuhis.net/vhcs/quota.txt
# mv quota.txt quota_notify
# chmod 755 quota_notify

Ouvrir le fichier /usr/local/sbin/quota_notify et modifier quelques variables :

# jed /usr/local/sbin/quota_notify
[...]
my $POSTFIX_CF = "/etc/postfix/main.cf";
my $MAILPROG = "/usr/sbin/sendmail -t";
my $WARNPERCENT = 80;
my @POSTMASTERS = ('postmaster@yourdomain.tld');
my $CONAME = 'My Company';
my $COADDR = 'postmaster@yourdomain.tld';
my $SUADDR = 'postmaster@yourdomain.tld';
my $MAIL_REPORT = 1;
my $MAIL_WARNING = 1;
[...]
           print "Subject: WARNING: Your mailbox is $lusers{$luser}% full.\n";
[...]
           print "Your mailbox: $luser is $lusers{$luser}% full.\n\n";
[...]

Ensuite, il faut programmer le script dans la crontab :

# crontab -e
0 0 * * * /usr/local/sbin/quota_notify &> /dev/null

Tester Postfix

Pour voir si Postfix est prêt pour l’identification et le TLS, il faut lancer la commande :

# telnet localhost 25

Et une fois la connexion établie, taper :

ehlo localhost

On dois voir apparaître ces 2 lignes :

250-STARTTLS
250-AUTH LOGIN PLAIN

La fenêtre de connections :

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 server1.example.com ESMTP Postfix (Debian/GNU)
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.

Pour quitter, le shell SMTP, il faut taper la commande :

quit

Pour revenir au shell Linux

Peupler et tester la base de données

Connections nous à la base de données MySQL en ligne de commande :

# mysql -u root -p
USE gestion;

Créons les entrées dans la table domains et users :

INSERT INTO `domains` (`domain`) VALUES ('example.com');
INSERT INTO `users` (`email`, `password`, `quota`) VALUES ('sales@example.com', ENCRYPT('secret'), 10485760);

A noter que le mot de passe en encrypter avec la fonction ENCRYPT() de MySQL
Exemple d’autres entrées dans les autres tables :

INSERT INTO `forwardings` (`source`, `destination`) VALUES ('info@example.com', 'sales@example.com');
INSERT INTO `transport` (`domain`, `transport`) VALUES ('example.com', 'smtp:mail.example.com');

Pour quitter le shell de MySQL, il faut taper la commande :

quit

Explications sur la table forwardings :

Explications sur la table transport :

Tester le fonctionnement

  • Créer un compte en POP
  • Créer un compte en IMAP
  • Envoyer un mail via smtp:25
  • Envoyer un mail via smtp:2525
  • Créer un dossier en IMAP

Webmails

Installation des webmails

# apt-get install squirrelmail roundcube ilohamail

Squirrelmail

Configuration de squirrelmail : ajout de plugins, de la langues par défaut,…

#/etc/squirrelmail/conf.pl

Créer un fichier de configuration Apache /etc/apache2/sites-enabled/squirrelmail :

Alias /squirrelmail /usr/share/squirrelmail

<Directory /usr/share/squirrelmail>
  Options FollowSymLinks
  <IfModule mod_php5.c>
    php_flag register_globals off
  </IfModule>
  <IfModule mod_dir.c>
    DirectoryIndex index.php
  </IfModule>

  # access to configtest is limited by default to prevent information leak
  <Files configtest.php>
    order deny,allow
    deny from all
    allow from 127.0.0.1
  </Files>
</Directory>

Redémarrer Apache, et se connecter via http://ip.du.serveur/squirrelmail/

Ilohamail

On corrige l’erreur situé le fichier /etc/IlohaMail/conf.php au alentour de la ligne 401, il y a un slash à la fin de la ligne.

Restreindre l’accès à notre seul serveur ; Indiquez $default_host = « localhost »; dans le fichier /etc/IlohaMail/login.php

Redémarrer Apache, et se connecter via http://ip.du.serveur/IlohaMail/

Page d’accès aux webmails

Création d’une page avec liens vers les webmail :

cd /var/www/
wget http://mx.enguehard.info/roundcube_logo.png
wget http://mx.enguehard.info/sm_logo.png
wget http://mx.enguehard.info/ilohamail-logo.gif
touch /var/www/robots.txt
touch /var/www/favicon.ico

Éditer la page /var/www/index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="description" content="Webmail" />
    <meta name="keywords" content="Webmail" />
    <meta http-equiv="X-UA-Compatible" content="chrome=1" />
    <meta name="Robots" content="index, follow, all" />
    <meta name="Rating" content="General" />
    <meta name="location" content="France, FRANCE" />
    <title>Webmail</title>
    <style type="text/css">
        body{text-align:center;background-color:#F9F9F9;color:#4B4A4A;}
        #body{width:640px;margin:auto;padding: 15px 0;}
        h2{}
        img.webmail{vertical-align:middle;padding:10px;margin:10px 5px;border:0;border-radius:5px;box-shadow:3px 3px 5px #BBBBBB;background-color:#FFFFFF;width:308px;-moz-transition:all 0.5s ease 0s;-webkit-transition:all 0.5s ease 0s;-o-transition:all 0.5s ease 0s;transition:all 0.5s ease 0s;}
        a:hover img.webmail{box-shadow:none;-moz-transition:all 0.5s ease 0s;-webkit-transition:all 0.5s ease 0s;-o-transition:all 0.5s ease 0s;transition:all 0.5s ease 0s;}
#footer{font-size:11px;font-style:italic;clear:left;padding:15px 0 0 0;}
	#footer a{text-decoration:none;color:#CCCCCC;}
    </style>
</head>
<body>
    <div id="body">
        <h2>Choisissez votre webmail</h2>
        <a href="/roundcube"><img src="./roundcube_logo.png" alt="Roundcube" title="Roundcube" class="webmail" /></a>
        <a href="/squirrelmail"><img src="./sm_logo.png" alt="SquirrelMail" title="SquirrelMail" class="webmail" /></a>
        <a href="/IlohaMail"><img src="./ilohamail-logo.gif" alt="IlohaMail" title="IlohaMail" class="webmail" /></a>
<div id="footer"><a href="http://www.enguehard.info" title="Enguehard">© Enguehard.info</a></div>
    </div>
</body>

Activez le https :

On va faire écouter le serveur Web sur le https ; d’abord activer le SSL et le site par default :

# a2enmod ssl
# a2ensite default-ssl
# service apache2 reload

Si problème avec le certificat, il faut le régénérer :

# make-ssl-cert generate-default-snakeoil

Adresses des webmail :

  • http://mx.enguehard.info/roundcube/
  • http://mx.enguehard.info/squirrelmail/
  • http://mx.enguehard.info/IlohaMail/

Ajouter un transport ‘lent’ pour certains FAI

Dans le fichier /etc/postfix/main.cf, ajoutez :

slow_destination_recipient_limit = 20
slow_destination_concurrency_limit = 2

Dans le fichier /etc/postfix/master.cf, ajoutez :

slow unix - - n - 5 smtp
        -o syslog_name=postfix-slow
        -o smtp_destination_concurrency_limit=3
        -o slow_destination_rate_delay=1

Peupler la base de données

INSERT INTO `transport` (`domain`, `transport`) VALUES ('aol.com', 'slow'), ('gmail.com', 'slow'),('orange.com', 'slow'),('orange.fr', 'slow'),('wanadoo.com', 'slow'),('wanadoo.fr', 'slow'),('yahoo.co.jp', 'slow'),('yahoo.co.uk', 'slow'),('yahoo.com', 'slow'),('yahoo.de', 'slow'),('yahoo.fr', 'slow'),('yahoo.ro', 'slow');

Redémarrer postfix :

# /etc/init.d/postfix restart

Ajouter un port d’écoute supplémentaire pour l’envoi des mails

Typiquement lorsque le FAI bloque le port 25, il faut pouvoir le contourner. On va donc faire écouter Postfix sur le port 2525 en plus du port par défaut.

Dans le fichier /etc/postfix/master.cf, ajoutez :

IP.DU.SERVEUR:2525      inet  n       -       -       -       - smtpd

Redémarrer postfix :

# /etc/init.d/postfix restart

Activez le port 465 (smtps)

Dans le fichier /etc/postfix/master.cf, dé-commentez les lignes suivantes :

smtps     inet  n       -       -       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes

Redémarrer postfix :

# /etc/init.d/postfix restart

Notes

Postfix utilise un système de cache pour le transport des mails. Il peut donc se passer un moment entre le moment ou il y a un changement dans la table de transport et son effet. Pour que les changements soit pris en comptes immédiatement, il faut lancer la commande :

# postfix reload

Les log d’erreurs de Postfix peuvent se consulter grâce à la commande :

# tail -f /var/log/mail.log

Les erreurs de configuration de Postfix ou savoir pourquoi Postfix ne démarrent pas peuvent être déterminé grâce à la commande :

# postfix check

Plus d’informations sur le transport des mails grâce à la commande :

# man transport

Configurer les entrées DNS pour utiliser un serveur de sauvegarde de mail :

IN MX 10 mail.example.com.
IN MX 20 mail.backup.com.

Pour spécifier la taille maximale des mails ; dans le fichier /etc/postfix/main.cf

message_size_limit = 42457280

Liens

  • Postfix MTA : http://www.postfix.org/
  • Postfix Quota Patch : http://web.onda.com.br/nadal/
  • phpMyAdmin : http://www.phpmyadmin.net/
  • Debian : http://www.debian.org/
  • Postfix + Quota : http://vhcs.net/new/modules/newbb/viewtopic.php?topic_id=3496&forum=17
  • Mail Passwords Encrypted using saslauthd : http://www.syscp.de/docs/public/contrib/cryptedmailpws
  • Workaround – Tutorial: ISP-style Email Service with Debian-Sarge and Postfix 2.1 : http://workaround.org/articles/ispmail-sarge/
  • HowToForge – Virtual Users And Domains With Postfix, Courier And MySQL (Debian Etch) : http://www.howtoforge.com/virtual_users_and_domains_with_postfix_debian_etch_p6

Leave a Reply

Your email address will not be published. Required fields are marked *