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 tzdataLa 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 -fREMARQUE : 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.localdomainMaintenant, nous devons simplement dire au système d’enregistrer le changement :
/etc/init.d/hostname.sh
hostname -fVous 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.shiRedMail 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 mailmanVous 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 reload6. 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 restart7. 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/mailmanScriptAlias /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 restart9. Création de votre première liste
La première liste Mailman est toujours “mailman”. Pour créer cette liste, exécutez :
newlist mailmanRemplissez 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 startUne 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.logSi vous devez essayer de recréer la liste Mailman, exécutez d’abord :
rmlist mailman10. 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 listnameAmusez-vous avec votre nouveau serveur Mailman ! J’espère que vous créerez de grandes communautés par email.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.