Hi!
Ich habe mailman mehr oder minder auf einem Gentoo Server für liveconfig automatisiert:
Damit wird der Server soweit eingerichtet, dass er für alle Postfix relaydomains auch Mailinglisten verwalten kann.
1. mailman installieren, einrichten und konfigurieren
mailman installiert sich unter Gentoo(~amd64) unter /usr/lib64/mailman/ und die Konfiguration/Mailinglisten unter /var/lib/mailman/
cd /usr/lib64/mailman
bin/newlist mailman
bin/genaliases
/etc/mailman/mm_cfg.py
###############################################
# Here's where we get the distributed defaults.
from Defaults import *
##################################################
# Put YOUR site-specific settings below this line.
MTA = 'Postfix'
IMAGE_LOGOS = '/mailman-icons/'
DEFAULT_EMAIL_HOST = 'beispiel.de'
DEFAULT_URL_HOST = 'beispiel.com'
DEB_LISTMASTER = 'postmaster@beispiel.de'
POSTFIX_STYLE_VIRTUAL_DOMAINS = []
VIRTUAL_HOSTS = {}
#### read relaydomains from postfix/liveconfig
import os
user = os.getuid()
import re
relaydomains = open("/etc/mailman/virtual_domains",'r')
for line in relaydomains:
if line.startswith('#'):
continue
line = re.sub(r'^(.*)(\t.*\n)$', r'\1', line)
VIRTUAL_HOSTS[line] = line
VIRTUAL_HOSTS['www.' + line] = line
VIRTUAL_HOSTS['list.' + line] = line
VIRTUAL_HOSTS['www.list.' + line] = line
POSTFIX_STYLE_VIRTUAL_DOMAINS.append(line)
relaydomains.close()
### end relaydomains
Alles anzeigen
Bei Gentoo werden die mailman Scripte unter /usr/lib64/mailman abgelegt und sind nicht direkt per Kommando Zeile zu erreichen. Deswegen habe ich mir zwei kleine Wrapper geschrieben:
/usr/local/bin/newlist
/usr/local/bin/rmlist
Leider gehört die Datei /etc/postfix/relay_domains, die ich für mailman missbrauche, dem Benutzer [noparse]root:postfix[/noparse] (Gentoo, Suse, ...) und der Benutzer mailman hat keinen Zugriff darauf, das Hinzufügen des Benutzers mailman zur Gruppe postfix tuts leider nicht, da mailman mit Gruppenrechten gestartet wird.*
Also musste ich mir was basteln damit diese Datei automatisch auch für den mailman verfügbar gemacht wird. Das Zaubertool ist incron, damit kann man auf Dateiänderungen warten und dann Aktionen ausführen.
Also incron installieren und dann als root per incrontab -e die incrontab bearbeiten und die folgende Zeile einfügen:
Das passende Skript dazu
/usr/local/bin/postfix2mailman
#!/bin/bash
cp -a /etc/postfix/virtual_domains /etc/mailman/virtual_domains
chown mailman:mailman /etc/mailman/virtual_domains
# Dann noch die Berechtigungen anpassen:
chown 755 /usr/local/bin/newlist /usr/local/bin/rmlist /usr/local/bin/postfix2mailman
2. Postfix anpassen
Für Postfix brauchen wir Änderungen an der main.cf, deswegen darf liveconfig diese nun nicht mehr überschreiben
Dafür in die custom.lua postfix.NOUPDATE = true einfügen und den liveconfig neustarten.
in der /etc/postfix/main.cf ändern wir
alias_maps = hash:/etc/aliases
nach
alias_maps = hash:/etc/aliases hash:/var/lib/mailman/data/aliases
alias_database = hash:/etc/aliases
nach
alias_database = hash:/etc/aliases hash:/var/lib/mailman/data/aliases
virtual_alias_maps = hash:/etc/postfix/virtual_alias
nach
virtual_alias_maps = hash:/etc/postfix/virtual_alias, hash:/var/lib/mailman/data/virtual-mailman
Alles anzeigen
Die Änderungen an der master.cf die oft in anderen Anleitungen benannt werden brauchen wir nicht, diese Wrapper Skripte werden von den mailman Entwicklern nicht empfohlen.
3. Apache konfigurieren
Nun zum Webinterface, bei mir unter Gentoo läuft der default Apache Server nicht mit suexec. Das ist hier perfekt, da ansonsten das mailman Webinterface nicht benutzbar ist, eventuell nur mit Handständen (mailman selbst kompilieren mit anderer GID) .
Die folgende Konfiguration ist Gentoo Spezifisch (<ifDefine MAILMAN> und </ifDefine> sollten bei allen anderen Distributionen wohl raus)
/etc/apache/modules.d/50_mailman.conf
<IfDefine MAILMAN>
ScriptAlias /mailman/ "/usr/lib64/mailman/cgi-bin/"
<Directory "/usr/lib64/mailman/cgi-bin/">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
Alias /pipermail/ "/var/lib/mailman/archives/public/"
<Directory "/var/lib/mailman/archives/public/">
AllowOverride None
Options ExecCGI FollowSymLinks
Order allow,deny
Allow from all
</Directory>
Alias /mailman-icons/ "/usr/lib64/mailman/icons/"
<Directory "/usr/lib64/mailman/icons/">
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</IfDefine>
Alles anzeigen
Generell kann man nun die Webseite meinhostname.de/mailman aufrufen.
Um nun für Kunden das bereitstellen zu können muss man pro Kunde die Datei
/var/www/<kundenname>/.httpd.conf anpasssen
/var/www/<kundenname>/.httpd.conf
ProxyPass /mailman http://meinhostname.de/mailman
ProxyPassReverse /mailman http://meinhostname.de/mailman
ProxyPass /pipermail http://meinhostname.de/pipermail
ProxyPassReverse /pipermail http://meinhostname.de/pipermail
ProxyPass /mailman-icons http://meinhostname.de/mailman-icons
ProxyPassReverse /mailman-icons http://meinhostname.de/mailman-icons
Dann den Apache neustarten.
4. Benutzung
Kommandozeile:
Liste anlegen:
[noparse]newlist meinetollemailinglist@meineiegenedomain.de[/noparse]
Liste löschen:
rmlist meinetollemailinglist
Archiv löschen:
rmlist -a meinetollemailinglist
Webinterface:
[noparse]Die Mailingliste ist nun auch per http://beispiel.de/mailman zu erreichen, http://www.beispiel.de, list.beispiel.de und http://www.list.beispiel.de (letztere müssen als Subdomains angelegt sein) sollten auch funktionieren, allerdings funktioniert das Anlegen dann nicht und Listen als bla@beispiel.de sind z.B. http://www.beispiel.de dann versteckt, da mailman intern den kompletten hostnamen verwendet um die zugehörigen Mailinglisten zu erkennen.[/noparse]
5. Hinweise
Ich habe meine Konfiguration leider erst aufgeschrieben nachdem ich sie komplett funktional hatte, deswegen kann es sein, dass ich etwas übersehen habe, also bitte einfach schreiben falls Probleme auftauchen, dann schaue ich mir das nochmal an und passe die Anleitung an.
Probleme mit Postfix beim Senden an eine Mailingliste kommen meistens daher dass die Dateien /var/lib/mailman/data/aliases und /var/lib/mailman/data/virtual_mailman dem falschen Besitzer gehören.
[size=-2]* Tatsächlich konnte ich nicht ganz genau nachvollziehen, warum der mailman vom postfix als mailman ausgeführt nicht die gleichen Rechte hat wie su - mailman "/usr/lib64/bin/mailman ...." letzteres funktioniert, dann darf mailman die Datei /etc/postfic/relay_domains lesen. Vielleicht hat jemand einen Tipp dazu. Ohne incron wäre das schon schicker.[/size]