如何安装和配置Mailman(使用Postfix)在Debian Squeeze上
Mailman是一个开源邮件列表管理器,即可用于管理电子邮件讨论和通讯列表。 它可能是互联网上最受欢迎和广泛使用的邮件列表管理器。 本教程介绍如何使用Postfix邮件服务器在Debian Squeeze服务器上安装和配置Mailman。
我不会保证这将为您工作!
1初步说明
在本教程中,我将配置一个主机名为lists.example.com的虚拟主机,我将在其中安装Mailman。 lists.example.com
也是Mailman中配置的邮件列表电子邮件地址的正确部分,即邮件列表中的邮件必须发送到地址<listname> @ lists.example.com
。
由于您的主机名不同,请相应地调整本教程。 还要确保您的主机名存在于DNS中。
Mailman可以与许多邮件服务器一起使用(例如Postfix,Exim,Sendmail,Qmail)。 我将在本教程中使用Postfix。 确保您有一个Postfix安装工作,例如本教程所示: 虚拟用户和域使用Postfix,Courier,MySQL和SquirrelMail(Debian Squeeze)
2安装Mailman和Apache
由于Mailman附带了Web前端,除了Mailman之外,我们还需要一个Web服务器。 我选择Apache。 Mailman和Apache可以安装如下:
apt-get install mailman apache2
您将看到以下问题/消息:
支持语言:
< - en(英文)
缺少网站列表
Mailman需要一个所谓的“站点列表”,这是密码提醒等从中发出的列表。
这个列表需要在mailman开始之前创建。
要创建列表,请运行“newlist mailman”并按照屏幕上的说明进行操作。
请注意,您还需要启动邮件程序,然后使用/etc/init.d/mailman启动。
< - 好的
Mailman附带了一个Apache配置文件/etc/mailman/apache.conf
,我们复制到/etc/apache2/sites-available/mailman.conf中
:
cp /etc/mailman/apache.conf /etc/apache2/sites-available/mailman.conf
打开/etc/apache2/sites-available/mailman.conf
...
vi /etc/apache2/sites-available/mailman.conf
...并附加以下虚拟机配置文件(已经有一个虚拟机为lists.example。net
在该文件中被发布 - 请不要使用该vhost,因为我的vhost配置有所不同,虽然看起来相当类似):
[...] <VirtualHost *:80> ServerName lists.example.com DocumentRoot /var/www/lists ErrorLog /var/log/apache2/lists-error.log CustomLog /var/log/apache2/lists-access.log combined <Directory /var/lib/mailman/archives/> Options 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/ ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo </VirtualHost> |
第二个最后一行ScriptAlias / / usr / lib / cgi-bin / mailman / listinfo
是可选的; 这使得当您访问http://lists.example.com/
时,您将被重定向到http://lists.example.com/listinfo
。 如果您没有在文件root / var / www / lists
中提供任何文件,这是有道理的。
接下来创建文件root / var / www / lists
,启用lists.example.com
vhost配置并重新启动Apache:
mkdir /var/www/lists
a2ensite mailman.conf
/etc/init.d/apache2 restart
因为我们在这里使用vhost( lists.example.com
),我们需要在/etc/mailman/mm_cfg.py中调整以下变量
:
vi /etc/mailman/mm_cfg.py
[...] DEFAULT_URL_PATTERN = 'http://%s/' [...] DEFAULT_EMAIL_HOST = 'lists.example.com' [...] DEFAULT_URL_HOST = 'lists.example.com' [...] |
3配置Postfix
现在我们需要配置Postfix。 第一次运行:
postconf -e 'relay_domains = lists.example.com'
postconf -e 'mailman_destination_recipient_limit = 1'
然后打开/etc/postfix/master.cf
...
vi /etc/postfix/master.cf
...并确保您有以下行(默认情况下应该在那里):
[...] mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} [...] |
接下来,我们必须将lists.example.com
域与mailman:
transport相关联。 这样做取决于您的Postfix配置。 例如,如果您已经根据使用Postfix,Courier,MySQL和SquirrelMail(Debian Squeeze)教程的虚拟用户和域设置了服务器,则传输将存储在MySQL数据库中; 在大多数其他设置中,文件/ etc / postfix / transport
用于创建传输。 我将在3.1和3.2章节中描述这两种情况。
3.1在MySQL数据库中的传输
如果您已经根据使用Postfix,Courier,MySQL和SquirrelMail(Debian Squeeze)教程的虚拟用户和域设置了服务器,则传输将存储在邮件
MySQL数据库的传输
表中。 要创建必要的传输,请登录MySQL ...
mysql -u root -p
...并运行以下MySQL命令:
USE mail;
INSERT INTO `transport` (`domain`, `transport`) VALUES ('lists.example.com', 'mailman:');
quit;
之后重新启动Postfix:
/etc/init.d/postfix restart
3.2传输在/ etc / postfix / transport中
如果你没有在MySQL数据库中的传输,你可能使用文件/ etc / postfix / transport
。 在这种情况下,您可以按如下所示设置必要的运输方式:
postconf -e 'transport_maps = hash:/etc/postfix/transport'
打开/ etc / postfix / transport
...
vi /etc/postfix/transport
...并添加以下行:
lists.example.com mailman: |
跑
postmap -v /etc/postfix/transport
之后重启Postfix:
/etc/init.d/postfix restart
4创建邮件员邮件列表
在我们开始使用Mailman之前,我们必须创建一个名为mailman
的邮件列表; 这是强制性的 - 没有它,Mailman将不会启动:
newlist --urlhost=lists.example.com --emailhost=lists.example.com mailman
在大多数情况下,-- urlhost
和--emailhost
交换机不是必需的,因为我们的vhost已经被命名为lists.example.com
,而且我们也在/etc/mailman/mm_cfg.py(DEFAULT_EMAIL_HOST
和DEFAULT_URL_HOST
)中使用它,但是如果要确保Mailman使用正确的主机名,请使用这些开关。
root @ server1:〜#newlist --urlhost = lists.example.com --emailhost = lists.example.com mailman
输入运行列表的人的电子邮件:
< - 指定列表管理员电子邮件地址,例如sales@example.com
初始邮件密码:
< - mailman_password
要完成创建邮件列表,您必须编辑/ etc /别名(或
等效)文件,添加以下行,并可能运行
`newaliases'程序:
##邮件邮件列表
邮递员:“| / 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确认:“| / var / lib / mailman / mail / 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”
邮件请求:“| / var / lib / mailman / mail / mailman请求邮件员”
mailman-subscribe:“| / var / lib / mailman / mail / mailman subscribe mailman”
mailman-unsubscribe:“| / var / lib / mailman / mail / mailman取消订阅邮件员”
点击输入以通知邮递员所有者...
< - ENTER
root @ server1:〜#
现在打开/ etc / aliases
并添加您在newlist
命令的输出中看到的别名(必须为您创建的每个新列表手动完成):
vi /etc/aliases
[...] ## 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" |
每当修改/ etc /别名
时,都需要运行
newaliases
/etc/init.d/postfix restart
之后。
现在我们终于可以开始Mailman了
/etc/init.d/mailman start
root@server1:~# /etc/init.d/mailman start
Starting Mailman master qrunner: mailmanctl.
root@server1:~#