Mailserver · 8 min read · Sep 26, 2025
Installation von iRedMail und Mailman auf Debian Squeeze
Installation von iRedMail und Mailman auf Debian Squeeze
Version: 1
Autor: Jason Norwood-Young
Letzte Bearbeitung: 22. Dezember 2011
Ich bin ein großer Fan von iRedMail, das im Grunde eine paketierte Version von Postfix und den anderen Komponenten ist, die Postfix cool machen, wie Spamassassin, Greylisting und ein LDAP- oder MySql-Backend. Eine Sache, die ich mit iRedMail wollte, ist Mailman, mein bevorzugter Mailinglisten-Server. Die Integration der beiden kann jedoch eine Herausforderung sein, also hier einige Anweisungen, um Ihnen einiges an Mühe zu ersparen.
Die iRedMail-Leute bieten eine kostenlose Admin-Konsole zur Verwaltung von Benutzerkonten an. Ich abonniere die Pro-Version von iRedMail’s Admin-Konsole, die sehr nützlich für Kunden ist, um sich selbst zu verwalten. Ich habe nichts mit iRedMail zu tun, außer ein Kunde zu sein.
1. Server einrichten
Ich installiere auf einer sauberen Debian Squeeze-Installation. Das erste, was ich immer auf einem neuen Server mache, ist:
apt-get update
apt-get upgrade
dpkg-reconfigure tzdataDie letzte Zeile ermöglicht es Ihnen, Ihre Zeitzone einzustellen. Es ist für unsere Zwecke nicht unbedingt erforderlich, aber ich halte es für eine gute Praxis, dies einzurichten.
Jetzt müssen wir einen vollständig qualifizierten Domainnamen (FQDN) einrichten. Das bedeutet, wir brauchen eine Domain wie mailserver.example.com anstelle von nur mailserver. Um zu überprüfen, was Ihr Hostname ist, geben Sie ein:
hostname -fHINWEIS: Der Domainname, den Sie wählen, sollte sich von der E-Mail-Domain unterscheiden, die Sie verwenden möchten. Wenn Sie möchten, dass Ihre E-Mail von [email protected] kommt, machen Sie Ihren Servernamen nicht example.com - geben Sie ihm einen Subdomainnamen wie obiwan oder captainkirk oder (wenn Sie so langweilig sind wie ich) mailserver.
Wenn Sie bereits einen FQDN haben, können Sie zu Schritt 2 übergehen.
Der Domainname wird an zwei Stellen festgelegt: /etc/hostname und /etc/hosts.
Bearbeiten Sie Ihre /etc/hostname, um Ihren FQDN zu enthalten (für die Zwecke dieses Tutorials werde ich mailserver.example.com verwenden).
Für Ihre /etc/hosts-Datei sollte Ihre erste Zeile so aussehen:
127.0.0.1 mailserver.example.com mailserver localhost localhost.localdomainJetzt müssen wir nur noch dem System sagen, dass es die Änderung registrieren soll:
/etc/init.d/hostname.sh
hostname -fSie sollten jetzt einen FQDN sehen. Wenn Sie keinen erhalten, geraten Sie in Panik! Äh, ich meine, starten Sie neu und überprüfen Sie es erneut.
2. iRedMail installieren
Zum Zeitpunkt des Schreibens ist die iRedMail-Version 0.7.3. Überprüfen Sie auf www.iredmail.org die neueste Version und passen Sie sie entsprechend an.
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 wird alles installieren, was Sie benötigen. Akzeptieren Sie alle Standardeinstellungen, außer für das Backend - wählen Sie MySql anstelle von LDAP. Wenn Sie nach Ihrer ersten virtuellen Mail-Domain gefragt werden, geben Sie example.com ein, NICHT mailserver.example.com. Antworten Sie mit Ja, wann immer Sie dazu aufgefordert werden.
Sie haben jetzt einen großartigen Mailserver! Das war einfach, oder?
3. Mailman installieren
Zuerst installieren wir Mailman:
apt-get install mailmanSie werden feststellen, dass Mailman noch nicht gestartet wird. Zuerst müssen wir Postfix sagen, dass es E-Mails an Mailman senden soll, wenn es E-Mails von bestimmten Adressen erhält.
4. Transport- und Alias-Konten einrichten
Wir werden eine virtuelle Domain namens lists.example.com erstellen, die wir für all unsere Mailman-Dinge verwenden werden. Immer wenn etwas an die Domain lists.example.com gesendet wird, werden wir das an das Mailman-Programm weiterleiten, anstatt es wie eine normale Mail zu behandeln.
Da wir nicht möchten, dass unsere Mailingliste auf der Domain lists.example.com ist, sondern nur auf example.com, werden wir auch eine Reihe von Aliasen einrichten, um die an Mailman-Adressen auf example.com gesendeten Mails zu akzeptieren und sie stattdessen an lists.example.com weiterzuleiten.
Wir werden all dies über die MySql-Datenbank tun. Richten Sie einen Browser auf https://example.com/phpmyadmin. Beachten Sie, dass es https und nicht nur http ist. Beachten Sie auch, dass Sie, wenn Sie keinen Nameserver haben, der bereits auf Ihre IP-Adresse zeigt, möglicherweise example.com zu Ihrer /etc/hosts-Datei auf Ihrem lokalen Computer hinzufügen müssen.
Melden Sie sich mit dem Benutzer root und dem Passwort an, das Sie während der iRedMail-Installation gewählt haben. Wenn Sie sich an keine Details erinnern können, schauen Sie in ~/iRedMail-0.7.3/iRedMail.tips - iRedMail speichert die Standorte, Benutzernamen und Passwörter für alle iRedMail-Dienste dort.
Klicken Sie im linken Panel auf die Datenbank “vmail” und dann auf die Registerkarte “SQL”. Fügen Sie den folgenden Befehl in die Registerkarte ein (nachdem Sie die Domain natürlich in Ihre eigene geändert haben) und klicken Sie auf Ausführen:
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');Das hat unseren Transport eingerichtet, um alles von lists.example.com an die Mailman-App zu senden.
Jetzt müssen wir die Mailman-Aliase hinzufügen. Sie müssen dies jedes Mal tun, wenn Sie eine neue Liste zu Mailman hinzufügen, suchen Sie einfach nach “mailman” und ersetzen Sie es durch Ihren neuen Listenname und führen Sie das SQL erneut aus.
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. Postfix einrichten
Zurück zur Kommandozeile. Wir müssen ausführen:
postconf -e 'relay_domains = lists.example.com'
postconf -e 'mailman_destination_recipient_limit = 1'
/etc/init.d/postfix reload6. Greylisting deaktivieren
Jetzt möchten Sie wahrscheinlich das Greylisting deaktivieren. Greylisting gibt einfach alle E-Mails zurück, die es von einem neuen Absender erhält. Wenn der Absender es später erneut versucht, ist es wahrscheinlich kein Spam-Bot. Es ist sehr effektiv, um Spam zu stoppen, bedeutet jedoch oft Verzögerungen zwischen dem Senden einer E-Mail und dem Empfang. Im Fall von Mailman, wenn die Nachricht an Mailman eine Stunde verzögert wird, fühlt sich das System unresponsiv an - insbesondere für neue Abonnenten. Es macht auch das Testen mühsam. Sie müssen es nicht deaktivieren - der nächste Teil ist optional.
Bearbeiten Sie /etc/postfix-policyd.conf:
[...]
GREYLISTING=0
[...]Jetzt starten Sie das Postfix-Richtlinien-Tool neu:
/etc/init.d/postfix-policyd restart7. Mailman konfigurieren
Wir werden Mailman sagen, dass es E-Mails von @example.com anstelle von @lists.example.com senden soll. Alle Links, die es sendet, müssen jedoch von der Domain lists.example.com kommen. Das liegt daran, dass wir eine virtuelle Domain nur für Mailman einrichten werden.
pico /etc/mailman/mm_cfg.py[...]
DEFAULT_URL_PATTERN = 'http://%s/'
[...]
DEFAULT_EMAIL_HOST = 'example.com'
[...]
DEFAULT_URL_HOST = 'lists.example.com'8. Apache konfigurieren
Wir sind fast fertig. Wir müssen nur noch den Apache-Server so konfigurieren, dass er die Mailman-Website bereitstellt, wann immer wir zu lists.example.com gehen. Vergessen Sie nicht, diese Domain in /etc/hosts oder Ihrem Nameserver einzurichten.
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
Jetzt müssen wir nur noch diesen virtuellen Host aktivieren.
a2ensite mailman
mkdir /var/www/lists
apache2ctl restart9. Erstellen Ihrer ersten Liste
Die erste Mailman-Liste heißt immer “mailman”. Um diese Liste zu erstellen, führen Sie aus:
newlist mailmanGeben Sie die E-Mail-Adresse und das Passwort Ihres Administrators ein. Es wird Sie auffordern, die Eingabetaste zu drücken, um den Administrator zu benachrichtigen. Wenn Sie dies tun, erhalten Sie nicht sofort eine E-Mail. Wir haben noch einen Schritt zu tun:
/etc/init.d/mailman startSobald wir das getan haben, sollte der Listenadministrator eine E-Mail mit einem Link zur Administrationsoberfläche der neuen Liste erhalten.
Wenn das funktioniert, möchten Sie auch die Abonnements testen (senden Sie einfach eine leere Mail an [email protected]). Wenn Sie eine Bestätigung für das Abonnement zurückbekommen und auf den Link klicken können, funktioniert wahrscheinlich alles zu 100 %. Wenn nicht, geraten Sie in Panik! Ich meine, schauen Sie sich /var/log/mail.log an, um eine Vorstellung davon zu bekommen, was schief läuft.
Hinweis: Um das Mail-Log im Auge zu behalten, verwenden Sie:
tail -f /var/log/mail.logWenn Sie versuchen müssen, die Mailman-Liste neu zu erstellen, führen Sie zuerst aus:
rmlist mailman10. Weitere Listen erstellen
Um eine Liste mit dem Namen “listname” zu erstellen, fügen Sie zuerst die Aliase der neuen Liste zur Alias-Tabelle in der MySql vmail-Datenbank hinzu:
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);Sobald das erledigt ist, führen Sie diesen Befehl aus, um eine neue Liste zu erstellen:
newlist listnameViel Spaß mit Ihrem neuen Mailman-Server! Ich hoffe, Sie erstellen einige großartige E-Mail-Communities.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.