Ergebnis 1 bis 2 von 2
  1. #1
    Benutzer
    Registriert seit
    18.04.2013
    Beiträge
    93

    Idee liveconfig + mailman

    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
    Code:
    ###############################################
    # 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
    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
    Code:
    #!/bin/bash
    cd /usr/lib64/mailman
    bin/newlist "$@"
    /usr/local/bin/rmlist
    Code:
    #!/bin/bash
    cd /usr/lib64/mailman
    bin/rmlist "$@"
    Leider gehört die Datei /etc/postfix/relay_domains, die ich für mailman missbrauche, dem Benutzer root:postfix (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:
    Code:
    /etc/postfix/virtual_domains IN_MODIFY /usr/local/bin/postfix2mailman
    Das passende Skript dazu

    /usr/local/bin/postfix2mailman
    Code:
    #!/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
    Code:
    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
    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
    Code:
    <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>
    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
    Code:
    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:
    newlist meinetollemailinglist@meineiegenedomain.de

    Liste löschen:
    rmlist meinetollemailinglist

    Archiv löschen:
    rmlist -a meinetollemailinglist

    Webinterface:
    Die Mailingliste ist nun auch per http://beispiel.de/mailman zu erreichen, www.beispiel.de, list.beispiel.de und 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. www.beispiel.de dann versteckt, da mailman intern den kompletten hostnamen verwendet um die zugehörigen Mailinglisten zu erkennen.

    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.

    * 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.
    Geändert von mgoeben (31.03.2014 um 16:47 Uhr)

  2. #2
    Benutzer
    Registriert seit
    18.04.2013
    Beiträge
    93
    Bin gerade selbst darüber gestolpert! Wenn suexec aktiviert ist funktioniert das Ganze nicht, da dann der Benutzer nicht auf die Mailman Verzeichnisse zugreifen, warum genau das bei einem Proxy Zugriff zum tragen kommt weiß ich nicht, aber suexec läßt sich deaktivieren, in dem man in dem Vertrag CGI verbietet.

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •