mailman3 auf CentOS 7.1 (produktiv)
Geschrieben von Stephan am 23 July 2015.
Heute wieder mal ein neuer Post von mir. Diesmal geht es um die Installation von mailman3 unter CentOS 7.1.
Zunächst müssen erstmal einige Pakete installiert werden. Folgende Pakete müssen installiert sein: httpd, mod_wsgi, python, python34, die python-devel Pakete,python-pip, Postfix, nodejs-less. Das kann man mit folgendem yum Befehl erledigen:
[root@host ~]# yum install http mod_wsgi python python34 python-devel python34-devel python-pip postfix nodejs-less
Damit sind die wichtigsten Pakete und deren Abhängigkeiten installiert. Als nächstes legen wir einen neuen, für mailman3 dedizierten, Benutzer an. Dazu einmal auf der Konsole
[root@host ~]# useradd mailman
ausführen. Damit wird der Benutzer “mailman” angelegt. In meiner Testinstallation habe ich mailman3 nach /opt installiert, somit muss natürlich der mailman Benutzer dort Vollzugriff haben. Also folgen nun folgene Befehle:
[root@host ~]# chown mailman:apache /opt
[root@host ~]# chmod 774 /opt
Den Apache-User habe ich direkt mit hinzugefügt, da es sonst Probleme beim Ausführen gibt. Nun ist von root-User Seite erstmal alles erledigt. Nun geht es weiter mit dem User mailman, der das git-Repository von mailman-bundler klont:
[root@host ~]# su - mailman
[mailman@host root] cd /opt
[mailman@host mailman] git clone https://gitlab.com/mailman/mailman-bundler.git
[mailman@host mailman] cd mailman-bundler
[mailman@host mailman-bundler]$
Im Verzeichnis angekommen, sicher stellen, dass python2.7 verwendet wird (ggf. mit python -V verifizieren) und dort eine virtuelle Python Umgebung einrichten. Dazu folgende Befehle ausführen:
[mailman@host mailman-bundler]$ virtualenv venv
[mailman@host mailman-bundler]$ source venv/bin/activate
(venv)mailman@host mailman-bundler]$
An dem (venv) erkennt ihr, dass ihr in der virtuellen Python Umgebung namnes “venv” seid. Dort angekommen müsst ihr zunächst zc.buildout installieren
[mailman@host mailman-bundler]$ pip install zc.buildout
Nun editiert hier mit vim oder nano die buildout.cfg und ändert ziemlich weit am Anfang deployment auf production (deployment = production). Danach ändert ihr noch unter mailman_web/production.py folgende Werte:
SECRET_KEY = 'irgendein wert (am besten pwgen 64 1 auf der Konsole und das Ergebnis hier rein)
ADMINS = (
('Mailman Admin', 'ihr@example.com'),
)
ALLOWED_HOSTS = ["irgendwas.example.com", "localhost"]
BROWSERID_AUDIENCES = ["http://irgendwas.example.com", "http://127.0.0.1", "http://127.0.0.1:8000"]
MAILMAN_API_USER = MAILMAN_USER = 'euerAPIuser'
MAILMAN_API_PASS = MAILMAN_PASS = 'euerPassWortdasVollGutIst'
MAILMAN_ARCHIVER_KEY = 'irgendwas von $pwgen 64 1'
DATABASES = {# gemäß Doku in der Datei, für sqlite3 als Beispiel
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/opt/mailman-bundler/var/mailman.db', # Pfad, wo die DB liegen soll
}
}
Das sind die wichtigsten Einstellungen. Weiter unten finden sich noch Lokalisierungseinstellungen und weiter Einstellungen. Da hilft es, die Doku von mailman3 zu lesen.
Nun geht es an das buildout. Einfach “buildout” in der Konsole eingeben und warten, bis es fertig ist. Sollten währenddessen Fehler auftreten, steht meist dabei, woher der Fehler rührt. Sollte das nicht weiterhelfen, hilft nur Google. (Bei mir klappte es ohne weitere Fehler).
Ist der buildout fertig, so sollte zunächst sicher gestellt werden, dass es die maailman.db gibt, sofern man sich für sqlite3 entschieden hat.
(venv)[mailman@host mailman-bundler]$ touch var/mailman.db
Weiterhin müssen folgende Verzeichnisse und Berechtigungen gesetzt werden:
[root@host ~]# mkdir -p /var/spool/mailman-web/static
[root@host ~]# chown -R mailman:apache /var/spool/mailman-web/
[root@host ~]# chmod -R 775 /var/spool/mailman-web/
[root@host ~]# mkdir -p /var/log/mailman-web/
[root@host ~]# chown -R mailman:apache /var/log/mailman-web/
[root@host ~]# chmod -R 775 /var/log/mailman-web/
Wichtig ist auch die korrekte Datenbank für hyperkitty in der /opt/mailman-bundler/deployment/mailman-hyperkitty.py (für unser Beispiel: sqlite:////opt/mailman-bundler/var/mailman.db).
Nun folgt das eigentliche deployen. In meinem Beispiel hat der Server nur eine Adresse und keine VHosts, also kopiere ich folgende Dateien an die entsprechenden Stellen und führe ein paar Kommandos aus:
[root@host ~]# cp /opt/mailman-bundler/deployment/apache.conf /etc/httpd/conf.d/
[root@host ~]# cp /opt/mailman-bundler/deployment/mailman3.logrotate.conf /etc/logrotate.d/
[root@host ~]# cp /opt/mailman-bundler/deployment/mailman3.service /usr/lib/systemd/system/
[root@host ~]# systemctl enable mailman3
[root@host ~]# cp /opt/mailman-bundler/deployment/mailman-web.logrotate.conf /etc/logrotate.d/
Nun muss noch der Inhalt von /opt/mailman-bundler/deployment/postfix.main.cf an die /etc/postfix/main.cf angehangen werden (ans Ende) und der Inhalt von /opt/mailman-bundler/deployment/crontab in crontab -e.
Danach ist fast alles ready. Noch zwei Befehle und der Start:
[root@host ~]# su mailman
[mailman@host root]$ cd /opt/mailman-bundler/
[mailman@host mailman-bundler]$ source venv/bin/activate
(venv)[mailman@host mailman-bundler]$ ./bin/mailman-post-update
(venv)[mailman@host mailman-bundler]$ ./bin/mailman-web-django-admin createsuperuser #legt den SuperUser an
[root@host ~]# systemctl start mailman3
[root@host ~]# systemctl reload httpd
Nun sollte unter eurer Domain Hyperkitty laufen und mailman start klar sein.