Mailman

Mailman 是一个管理电子邮件讨论及电子通讯列表的开源程序。许多开源的邮件列表 (包括所有的 Ubuntu 邮件列表)使用 Mailman 作为他们的邮件列表软件。它是强大的且易于安装和维护。

安装

Mailman 为管理员和用户提供一个 web 界面。因此,它要求 apache 要有 mod_perl 的支持。Mailman 使用外部邮件服务器来发送和接收邮件。它可以与下列邮件服务器很好的工作:

  • Postfix

  • Exim

  • Sendmail

  • Qmail

我们将看到如何安装 mailman、apache web 服务器和 Exim 邮件服务器。如果您希望安装 mailman 和一个不同的邮件服务器,请参考参考部分。

Apache2

若要安装 apache2,详情请参考 HTTPD 安装 一节。

Exim4

若想安装 Exim4,请您在终端运行以下命令:

sudo apt-get install exim4
sudo apt-get install exim4-base
sudo apt-get install exim4-config

一旦安装完 exim4,配置文件会被存储在 /etc/exim4 目录。在 Ubuntu 中,exim4 的配置文件默认被分散到不同的文件中。您可以通过改变 /etc/exim4/update-exim4.conf 文件中的以下变量来改变这种行为:

  • dc_use_split_config='true'

Mailman

要安装 Mailman,在终端提示符后运行下列命令:

sudo apt-get install mailman

它复制安装文件到 /var/lib/mailman 目录,将 CGI 脚本安装到 /usr/lib/cgi-bin/mailman目录,创建 list linux 用户,创建 list linux 用户组。mailman 进程将以该用户运行。

配置

本节假定您已经成功安装 mailmanapache2exim4。现在您只需要配置它们。

Apache2

一旦 apache2 安装之后,您可以在 /etc/apache2/apache2.conf 文件添加下列行:

Alias /images/mailman/ "/usr/share/images/mailman/"
Alias /pipermail/ "/var/lib/mailman/archives/public/"

Mailman 使用 apache2 来运行它的 CGI 脚本。mailman 的 CGI 脚本被安装在 /usr/lib/cgi-bin/mailman 目录中。因此 mailman 的 url 将是 http://hostname/cgi-bin/mailman/。如果您希望改变这一状况,您可以修改 /etc/apache2/apache2.conf 文件。

Exim4

一旦 Exim4 安装之后,您可以在终端提示符后使用下列命令启动 Exim 服务器:


sudo apt-get /etc/init.d/exim4 start

为了使 mailman 可以和 exim4 一起工作,您需要配置 exim4。正如先前所说的那样,在缺省状态下 exim4 使用不同类型的多个配置文件。详情请参考 Exim 网站。要运行 mailman,我们可以新建一个配置文件到下列配置类型:

  • 传输

  • 路由器

Exim 按这些小的配置文件顺序创建出一个主配置文件。因此这些配置文件的顺序是非常重要的。

所有隶属于主类别的配置文件都被保存在 /etc/exim4/conf.d/main/ 目录中。您可以将下面的内容添加到一个名为 04_exim4-config_mailman 的新文件中:



# start

# Home dir for your Mailman installation -- aka Mailman's prefix

# directory.

# On Ubuntu this should be "/var/lib/mailman"

# This is normally the same as ~mailman

MM_HOME=/var/lib/mailman

#

# User and group for Mailman, should match your --with-mail-gid

# switch to Mailman's configure script. Value is normally "mailman"

MM_UID=list

MM_GID=list

#

# Domains that your lists are in - colon separated list

# you may wish to add these into local_domains as well

domainlist mm_domains=hostname.com

#
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#
# These values are derived from the ones above and should not need
# editing unless you have munged your mailman installation
#
# The path of the Mailman mail wrapper script
MM_WRAP=MM_HOME/mail/mailman
#
# The path of the list config file (used as a required file when
# verifying list addresses)
MM_LISTCHK=MM_HOME/lists/${lc::$local_part}/config.pck
# end

传输

所有隶属于传输类型的文件被保存在 /etc/exim4/conf.d/transport/ 目录中。您可以将下面的内容添加到一个名为 40_exim4-config_mailman 的新文件中:

  mailman_transport:
   driver = pipe
   command = MM_WRAP \
               '${if def:local_part_suffix \
                     {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} \
                     {post}}' \
               $local_part
    current_directory = MM_HOME
    home_directory = MM_HOME
    user = MM_UID
    group = MM_GID

路由器

所有隶属于路由类的所有配置文件都被保存在 /etc/exim4/conf.d/router/ 目录中。您可以将下列内容添加到名为 101_exim4-config_mailman 的新文件中:

  mailman_router:
   driver = accept
   require_files = MM_HOME/lists/$local_part/config.pck
   local_part_suffix_optional
   local_part_suffix = -bounces : -bounces+* : \
                       -confirm+* : -join : -leave : \
                       -owner : -request : -admin
   transport = mailman_transport

[警告]

主类和传输类的配置文件的顺序可以随意。但路由类的配置文件的顺序必须相同。该文件必须在 200_exim4-config_primary 文件之前出现。如果两个配置文件包含相同类型的信息。第一个文件优先。详情请参阅参考部分。

Mailman

安装 mailman 之后,您可以使用下列命令来运行它:

sudo /etc/init.d/mailman start

一旦安装完 mailman,您必须创建缺省的邮件列表。运行下列命令以创建邮件列表:

sudo /usr/sbin/newlist mailman
  Enter the email address of the person running the list: bhuvan at ubuntu.com
  Initial mailman password:
  To finish creating your mailing list, you must edit your /etc/aliases (or
  equivalent) file by adding the following lines, and possibly running the
  `newaliases' program:

  ## mailman mailing list
  mailman: "|/var/lib/mailman/mail/mailman post mailman"
  mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"
  mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"
  mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"
  mailman-join: "|/var/lib/mailman/mail/mailman join mailman"
  mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"
  mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"
  mailman-request: "|/var/lib/mailman/mail/mailman request mailman"
  mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"
  mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"


  Hit enter to notify mailman owner...

  # 

我们已经把 exim 配置成可以识别所有来自 mailman 的邮件。因此并不强制要在 /etc/aliases 中添加任何新的条目。如果您对配置文件做了改动,请确保您在进入下一节之前重启了这些服务。

管理

我们假设您是默认安装。mailman 的 cgi 脚本还在 /usr/lib/cgi-bin/mailman/ 目录中。mailman 提供了一个基于 web 的管理工具。若想访问这个页面,请将您的浏览器指向以下 url:

http://hostname/cgi-bin/mailman/admin

默认的邮件列表 mailman 会在这个屏幕中出现。如果您点击邮件列表的名称,它会向您询问通行密码。如果您输入了正确的密码,您就可以修改这个邮件列表的管理设定。您可以使用命令行工具来创建新的邮件列表(/usr/sbin/newlist)。或者您也可以使用 web 界面

用户

Mailman 为用户提供了一个 web 界面,可以在您的浏览器中输入下列 url 来访问该页:

http://hostname/cgi-bin/mailman/listinfo

缺省邮件列表 mailman 将出现在屏幕上。如果您点击邮件列表名,它将显示订阅表单。您可以输入您的邮件地址、姓名 (可选)及密码来订阅。一个邀请邮件将发送给您。您可以根据该邮件的指示完成订阅。

参考资料

GNU Mailman - 安装手册

指南 - 一起使用 Exim 4 和 Mailman 2.1