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