Configure Mailman on Debian Etch with a Postfix

Install a Mailman with a Postfix on Debian

apt-get install postfix mailman

Configure Mailman

Add or change these lines in /etc/mailman/mm_cfg.py (example vhost : lists.example.net) :

DEFAULT_EMAIL_HOST = 'lists.example.net'
DEFAULT_URL_HOST = 'lists.example.net'
DEFAULT_URL_PATTERN = 'http://%s/'

Configure Postfix

Example with (domain : lists.example.net)

  • configure main.cf like this :
  • # See /usr/share/postfix/main.cf.dist for a commented, more complete version
    smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
    biff = no
     
    # appending .domain is the MUA's job.
    append_dot_mydomain = no
     
    # Uncomment the next line to generate "delayed mail" warnings
    #delay_warning_time = 4h
     
    myhostname = foo.example.net
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases
    myorigin = /etc/mailname
    mydestination = lists.example.net, localhost
    relayhost =
    # Relay mailman 
    relay_domains = lists.example.net
    transport_maps = hash:/etc/postfix/transport
    mailman_destination_recipient_limit = 1
     
    mynetworks = 127.0.0.0/8 192.168.15.0/24
    mailbox_command = procmail -a "$EXTENSION"
    mailbox_size_limit = 0
    recipient_delimiter = +
    inet_interfaces = all
     
    # Allow connections from trusted networks only.
    smtpd_client_restrictions = permit_mynetworks, reject_unknown_client
    smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname
    smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
  • add /etc/postfix/transport with this :
  •  lists.example.net mailman:
  • Run this cmd :
  •  postmap /etc/postfix/transport
  • Restart your postfix :
  • # /etc/init.d/postfix restart

    Great your postfix is now ready !

    Configure the HTTP interface

  • Add this vhost to your apache (only tested with a Apache v2) :
  •  <VirtualHost *:80>    
        ServerName lists.example.net
        DocumentRoot /var/www/lists
        ErrorLog /var/log/apache2/lists-error.log
        CustomLog /var/log/apache2/lists-access.log combined
        <Directory>
          Options Indexes FollowSymLinks
          AllowOverride None
        </Directory>
     
        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/
     
    </VirtualHost>

  • then create the document root :
  • # mkdir /var/www/list
  • go to : http://lists.example.net/listinfo and enjoy :D

Change the List creator’s (authentication) password

Just launch this cmd line as root :

# mmsitepass

Add a new ML 

You have two solutions :

  • cmd line : newlist
  • Web interface : http://lists.example.net/admin

And add the aliases (example with devel list) :

  • add this to /etc/aliases
  • ## devel mailing list
    devel:                 "|/var/lib/mailman/mail/mailman post devel"
    devel-admin:        "|/var/lib/mailman/mail/mailman admin devel"
    devel-bounces:     "|/var/lib/mailman/mail/mailman bounces devel"
    devel-confirm:      "|/var/lib/mailman/mail/mailman confirm devel"
    devel-join:           "|/var/lib/mailman/mail/mailman join devel"
    devel-leave:         "|/var/lib/mailman/mail/mailman leave devel"
    devel-owner:        "|/var/lib/mailman/mail/mailman owner devel"
    devel-request:      "|/var/lib/mailman/mail/mailman request devel"
    devel-subscribe:    "|/var/lib/mailman/mail/mailman subscribe devel"
    devel-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe devel"
  • Launch this command as root :
  • # newaliases

Delete a ML

  • Just delete the ML but keep th archive
  • # rmlist listname
  • Delete the archive
  • # rmlist -a listname
  • Remove the mail aliases :
  • # vim /etc/aliases
    # newaliases

Leave a Reply