Serveur Mail · 8 min read · Sep 26, 2025

Installation d'iRedMail et de Mailman sur Debian Squeeze

Installation d’iRedMail et de Mailman sur Debian Squeeze

Version : 1
Auteur : Jason Norwood-Young
Dernière modification : 22 décembre 2011

Je suis un grand fan d’iRedMail, qui est essentiellement une version packagée de Postfix et des autres éléments qui rendent Postfix cool, comme Spamassassin, le greylisting et un backend LDAP ou MySql. Une chose que je voulais avec iRedMail est Mailman, mon serveur de listes de diffusion préféré. Intégrer les deux peut être une mission, alors voici quelques instructions pour vous éviter pas mal de douleur.

Les gars d’iRedMail offrent une console d’administration gratuite pour gérer les comptes utilisateurs. Je suis abonné à la version Pro de la console d’administration d’iRedMail, qui est très utile pour que les clients puissent se gérer eux-mêmes. Je n’ai rien à voir avec iRedMail, à part être un client.

1. Configuration du serveur

J’installe sur une installation propre de Debian Squeeze. La première chose que je fais toujours sur un nouveau serveur est :

apt-get update   
apt-get upgrade   
dpkg-reconfigure tzdata

La dernière ligne vous permet de définir votre fuseau horaire. Ce n’est pas strictement nécessaire pour nos besoins, mais je considère que c’est une bonne pratique de le configurer.

Maintenant, nous devons configurer un nom de domaine pleinement qualifié (FQDN). Cela signifie que nous avons besoin d’un domaine comme mailserver.example.com au lieu de simplement mailserver. Pour vérifier quel est votre nom d’hôte, tapez :

hostname -f

REMARQUE : Le nom de domaine que vous choisissez doit être différent du domaine email que vous souhaitez utiliser. Si vous voulez que votre email provienne de [email protected], ne faites pas de votre nom de serveur example.com - donnez-lui un sous-domaine comme obiwan ou captainkirk ou (si vous êtes ennuyeux comme moi) mailserver.

Si vous avez déjà un FQDN, vous pouvez passer à l’étape 2.

Le nom de domaine est défini à deux endroits : /etc/hostname et /etc/hosts.

Modifiez votre /etc/hostname pour contenir votre FQDN (pour les besoins de ce tutoriel, j’utiliserai mailserver.example.com).

Pour votre fichier /etc/hosts, votre première ligne devrait ressembler à ceci :

127.0.0.1     mailserver.example.com mailserver localhost localhost.localdomain

Maintenant, nous devons simplement dire au système d’enregistrer le changement :

/etc/init.d/hostname.sh   
hostname -f

Vous devriez maintenant voir un FQDN. Si vous n’en obtenez pas, paniquez ! Euh, je veux dire redémarrez et vérifiez à nouveau.

2. Installation d’iRedMail

Au moment de l’écriture, la version d’iRedMail est 0.7.3. Vérifiez sur www.iredmail.org pour la dernière version et ajustez en conséquence.

cd ~   
wget http://iredmail.googlecode.com/files/iRedMail-0.7.3.tar.bz2   
apt-get install bzip2   
tar xjf iRedMail-0.7.3.tar.bz2   
cd iRedMail-0.7.3   
bash iRedMail.sh

iRedMail installera tout ce dont vous avez besoin. Acceptez tous les paramètres par défaut sauf pour le backend - choisissez MySql au lieu de LDAP. Lorsque vous êtes invité à entrer votre premier domaine de mail virtuel, mettez example.com, PAS mailserver.example.com. Répondez Oui chaque fois que vous êtes invité.

Vous avez maintenant un serveur mail qui déchire ! C’était facile, non ?

3. Installation de Mailman

Tout d’abord, nous installons Mailman :

apt-get install mailman

Vous remarquerez que Mailman n’est pas encore démarré. D’abord, nous devons dire à Postfix d’envoyer des mails à Mailman lorsqu’il reçoit des mails de certaines adresses.

4. Configuration des comptes de Transport et d’Alias

Nous allons créer un domaine virtuel appelé lists.example.com, que nous allons utiliser pour tout notre matériel Mailman. Chaque fois que quelque chose est envoyé au domaine lists.example.com, nous allons le transférer au programme Mailman au lieu de le traiter comme un mail normal.

Puisque nous ne voulons pas que notre liste de diffusion soit sur le domaine lists.example.com mais plutôt juste example.com, nous allons également configurer un tas d’alias pour accepter les mails envoyés aux adresses Mailman sur example.com et les rediriger vers lists.example.com.

Nous allons faire tout cela via la base de données MySql. Pointez un navigateur sur https://example.com/phpmyadmin. Remarquez qu’il s’agit de https et pas juste http. Notez également que si vous n’avez pas de serveur de noms pointant déjà vers votre adresse IP, vous devrez peut-être ajouter example.com à votre fichier /etc/hosts sur votre ordinateur local.

Connectez-vous avec l’utilisateur root et le mot de passe que vous avez choisi lors de l’installation d’iRedMail. Si vous ne vous souvenez d’aucun détail, consultez ~/iRedMail-0.7.3/iRedMail.tips - iRedMail enregistre commodément les emplacements, noms d’utilisateur et mots de passe pour tous les services iRedMail là-dedans.

Cliquez sur la base de données “vmail” dans le panneau de gauche, puis sur l’onglet “SQL”. Collez la commande suivante dans l’onglet (après avoir changé le domaine pour le vôtre bien sûr) et appuyez sur Go :

INSERT INTO `vmail`.`domain` (`domain`, `description`, `disclaimer`, `aliases`, `mailboxes`, `maxquota`, `quota`, `transport`, `backupmx`, `defaultuserquota`, `defaultuseraliases`, `defaultpasswordscheme`, `minpasswordlength`, `maxpasswordlength`, `created`, `modified`, `expired`, `active`) VALUES ('lists.example.com', '', '', '0', '0', '0', '0', 'mailman:', '0', '1024', '', '', '0', '0', NOW(), '0000-00-00 00:00:00', '9999-12-31 00:00:00', '1');

Cela a configuré notre Transport pour obtenir tout depuis lists.example.com vers l’application Mailman.

Maintenant, nous devons ajouter les alias Mailman. Vous devrez faire cela chaque fois que vous ajoutez une nouvelle liste à Mailman, il suffit de rechercher et de remplacer “mailman” par le nom de votre nouvelle liste et de relancer le SQL.

INSERT INTO `alias` (`address`, `goto`, `name`, `moderators`, `accesspolicy`, `domain`, `created`, `modified`, `expired`, `active`) VALUES
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1);

5. Configuration de Postfix

Retour à la ligne de commande. Nous devons exécuter :

postconf -e 'relay_domains = lists.example.com'   
postconf -e 'mailman_destination_recipient_limit = 1'   
/etc/init.d/postfix reload

6. Désactiver le Greylisting

Maintenant, vous voudrez probablement désactiver le Greylisting. Le Greylisting renvoie simplement tous les mails qu’il reçoit d’un nouvel expéditeur. Si l’expéditeur essaie d’envoyer à nouveau dans un certain temps, ce n’est probablement pas un bot de spam. C’est très efficace pour arrêter le spam, mais cela signifie souvent des délais entre l’envoi d’un mail et sa réception. Dans le cas de Mailman, si le message à Mailman est retardé d’une heure, cela rend le système peu réactif - surtout pour les nouveaux abonnés. Cela rend également les tests difficiles. Vous n’avez pas besoin de le désactiver - la prochaine étape est facultative.

Modifiez /etc/postfix-policyd.conf :

[...]
GREYLISTING=0
[...]

Maintenant, redémarrez le truc de politique Postfix :

/etc/init.d/postfix-policyd restart

7. Configuration de Mailman

Nous allons dire à Mailman d’envoyer des mails depuis @example.com au lieu de @lists.example.com. Cependant, tous les liens qu’il envoie doivent provenir du domaine lists.example.com. C’est parce que nous allons configurer un domaine virtuel juste pour Mailman.

pico /etc/mailman/mm_cfg.py
[...]
DEFAULT_URL_PATTERN = 'http://%s/'
[...]
DEFAULT_EMAIL_HOST = 'example.com'
[...]
DEFAULT_URL_HOST = 'lists.example.com'

8. Configuration d’Apache

Nous y sommes presque. Nous devons juste configurer le serveur Apache pour servir le site web de Mailman chaque fois que nous allons sur lists.example.com. N’oubliez pas de configurer ce domaine dans /etc/hosts ou votre serveur de noms.

pico /etc/apache2/sites-available/mailman
ScriptAlias /cgi-bin/mailman/ /usr/lib/cgi-bin/mailman/
Alias /pipermail/ /var/lib/mailman/archives/public/
Alias /images/mailman/ /usr/share/images/mailman/

    AllowOverride None
    Options ExecCGI
    AddHandler cgi-script .cgi
    Order allow,deny
    Allow from all
    Satisfy Any


    Options FollowSymlinks
    AllowOverride None
    Order allow,deny
    Allow from all


    AllowOverride None
    Order allow,deny
    Allow from all


    ServerName lists.example.com
    DocumentRoot /var/www/lists
    ErrorLog /var/log/apache2/lists-error.log
    CustomLog /var/log/apache2/lists-access.log combined
    
        Options FollowSymLinks
        AllowOverride None
    
    Alias /pipermail/ /var/lib/mailman/archives/public/
    Alias /images/mailman/ /usr/share/images/mailman/
    ScriptAlias /admin /usr/lib/cgi-bin/mailman/admin
    ScriptAlias /admindb /usr/lib/cgi-bin/mailman/admindb
    ScriptAlias /confirm /usr/lib/cgi-bin/mailman/confirm
    ScriptAlias /create /usr/lib/cgi-bin/mailman/create
    ScriptAlias /edithtml /usr/lib/cgi-bin/mailman/edithtml
    ScriptAlias /listinfo /usr/lib/cgi-bin/mailman/listinfo
    ScriptAlias /options /usr/lib/cgi-bin/mailman/options
    ScriptAlias /private /usr/lib/cgi-bin/mailman/private
    ScriptAlias /rmlist /usr/lib/cgi-bin/mailman/rmlist
    ScriptAlias /roster /usr/lib/cgi-bin/mailman/roster
    ScriptAlias /subscribe /usr/lib/cgi-bin/mailman/subscribe
    ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/
    ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo

Maintenant, nous devons juste activer cet hôte virtuel.

a2ensite mailman   
mkdir /var/www/lists   
apache2ctl restart

9. Création de votre première liste

La première liste Mailman est toujours “mailman”. Pour créer cette liste, exécutez :

newlist mailman

Remplissez l’adresse email et le mot de passe de votre administrateur. Il vous demandera d’appuyer sur Entrée pour notifier l’administrateur. Lorsque vous le ferez, vous ne recevrez pas immédiatement un email. Nous avons une étape de plus à faire :

/etc/init.d/mailman start

Une fois que nous avons fait cela, l’administrateur de la liste devrait recevoir un email avec un lien vers l’interface d’administration de la nouvelle liste.

Si cela fonctionne, vous voudrez également tester les abonnements (il suffit d’envoyer un mail vide à [email protected]). Si vous recevez une confirmation d’abonnement et que vous pouvez cliquer sur le lien, alors tout fonctionne probablement à 100 %. Sinon, paniquez ! Je veux dire, jetez un œil à /var/log/mail.log pour avoir une idée de ce qui ne va pas.

Indice : pour garder un œil sur le journal des mails, utilisez :

tail -f /var/log/mail.log

Si vous devez essayer de recréer la liste Mailman, exécutez d’abord :

rmlist mailman

10. Création de plus de listes

Pour créer une liste appelée “listname”, ajoutez d’abord les alias de la nouvelle liste à la table des alias dans la base de données vmail MySql :

INSERT INTO `alias` (`address`, `goto`, `name`, `moderators`, `accesspolicy`, `domain`, `created`, `modified`, `expired`, `active`) VALUES
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1);

Une fois cela fait, exécutez cette commande pour créer une nouvelle liste :

newlist listname

Amusez-vous avec votre nouveau serveur Mailman ! J’espère que vous créerez de grandes communautés par email.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.