在Debian Squeeze上安装iRedMail和Mailman
版本:1
作者:Jason Norwood-Young
最后编辑:2011年12月22日
我是iRedMail的粉丝,它基本上是Postfix的封装版本,而Postfix的其他功能比较好,像Spamassassin,greylisting和LDAP或MySql后端。 我想用iRedMail的一件事是Mailman ,我最喜欢的邮件列表服务器。 整合两者可能是一个使命,所以这里有一些指导,以挽救你的痛苦。
iRedMail的家伙提供了一个管理用户帐户的免费管理控制台。 我订阅了iRedMail的Pro版本的管理控制台,这对客户端进行自我管理非常有用。 除了成为客户外,我与iRedMail无关。
1.设置服务器
我正在安装一个干净的Debian Squeeze安装。 我一直在新服务器上做的第一件事是:
apt-get update
apt-get upgrade
dpkg-reconfigure tzdata
最后一行允许您设置您的时区。 我们的目的并不是绝对必要的,但我认为这是很好的做法。
现在我们需要设置一个完全限定域名(FQDN)。 这意味着我们需要像mailserver.example.com
这样的域名,而不是只有mailserver
。 要检查您的主机名,请输入:
hostname -f
注意:您选择的域名应与您希望使用的电子邮件域不同。 如果您希望您的电子邮件来自joebob@example.com,请勿使您的服务器名称example.com - 给它一个像obiwan或captainkirk这样的子域名,或者(如果你像我这样无聊)mailserver。
如果您已经有了FQDN,可以转到第2步。
域名设置在两个地方: / etc / hostname
和/ etc / hosts
。
编辑您的/ etc / hostname
以包含您的FQDN(为了本教程的目的,我将使用mailserver.example.com
)。
对于您的/ etc / hosts
文件,您的第一行应如下所示:
127.0.0.1 mailserver.example.com mailserver localhost localhost.localdomain
现在我们只需要告诉系统注册更改:
/etc/init.d/hostname.sh
hostname -f
你现在应该看到一个FQDN。 如果你没有得到,恐慌! 呃,我的意思是重新启动并再次检查。
2.安装iRedMail
在撰写本文时,iRedMail版本为0.7.3。 在www.iredmail.org上查看最新版本,并进行相应调整。
cd ~
wget http://iredmail.googlecode.com/files/iRedMail-0.7.3.tar.bz2
apt-get install bzip2
tar xjf iRedMail-0.7.3.tar.bz2
cd iRedMail-0.7.3
bash iRedMail.sh
iRedMail将安装您需要的一切。 接受除了后端之外的所有默认值 - 选择MySql而不是LDAP。 当提示您输入第一个虚拟邮件域时,请放在example.com,而不是mailserver.example.com。 提示时回答是。
你现在有一个摇滚的邮件服务器! 那很容易啊
3.安装Mailman
首先我们安装Mailman:
apt-get install mailman
你会注意到,Mailman还没有开始。 首先,我们需要告诉Postfix在邮件从某些地址收到邮件时发送邮件。
4.设置运输和别名帐户
我们将创建一个名为lists.example.com的虚拟域,我们将用于我们所有的Mailman内容。 无论何时将某些内容发送到域名.s.example.com,我们将转发到Mailman程序,而不是像正常的邮件一样处理它。
由于我们不希望我们的邮件列表位于lists.example.com,而只是example.com,我们还将设置一些别名来接收发送到example.com上的邮件地址的邮件,而是将它们路由到lists.example.com。
我们将通过MySql数据库执行所有这些操作。 将浏览器指向https://example.com/phpmyadmin
。 请注意,它是https而不是http。 另请注意,如果您的Nameservers没有指向您的IP地址,则可能需要将example.com添加到本地计算机上的/ etc / hosts文件中。
使用root用户登录,以及在安装iRedMail期间选择的密码。 如果您不记得任何细节,请查看〜/ iRedMail-0.7.3 / iRedMail.tips
- iRedMail方便地保存所有iRedMail服务的位置,用户名和密码。
单击左侧面板中的“vmail”数据库,然后单击“SQL”选项卡。 将以下命令粘贴到选项卡(当然,将域更改为您自己的名称)后,点击Go:
INSERT INTO `vmail`.`domain` (`domain`, `description`, `disclaimer`, `aliases`, `mailboxes`, `maxquota`, `quota`, `transport`, `backupmx`, `defaultuserquota`, `defaultuseraliases`, `defaultpasswordscheme`, `minpasswordlength`, `maxpasswordlength`, `created`, `modified`, `expired`, `active`) VALUES ('lists.example.com', '', '', '0', '0', '0', '0', 'mailman:', '0', '1024', '', '', '0', '0', NOW(), '0000-00-00 00:00:00', '9999-12-31 00:00:00', '1');
这使得我们的运输公司获得了从lists.example.com到Mailman应用程序的一切。
现在我们需要添加Mailman别名。 每次向Mailman添加新列表时,都需要执行此操作,只需使用新的列表名称搜索并替换“mailman”,然后再次运行SQL。
INSERT INTO `alias` (`address`, `goto`, `name`, `moderators`, `accesspolicy`, `domain`, `created`, `modified`, `expired`, `active`) VALUES ('mailman@example.com', 'mailman@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('mailman-admin@example.com', 'mailman-admin@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('mailman-bounces@example.com', 'mailman-bounces@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('mailman-confirm@example.com', 'mailman-confirm@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('mailman-join@example.com', 'mailman-join@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('mailman-leave@example.com', 'mailman-leave@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('mailman-owner@example.com', 'mailman-owner@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('mailman-requests@example.com', 'mailman-requests@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('mailman-subscribe@example.com', 'mailman-subscribe@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('mailman-unsubscribe@example.com', 'mailman-unsubscribe@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1);
5.设置Postfix
回到命令行。 我们需要运行:
postconf -e 'relay_domains = lists.example.com'
postconf -e 'mailman_destination_recipient_limit = 1'
/etc/init.d/postfix reload
6.关闭灰名单
现在你可能要关闭灰名单。 灰名单只返回从新的发件人收到的所有邮件。 如果发件人尝试在一段时间内再次发送,那可能不是垃圾邮件机器人。 阻止垃圾邮件非常有效,但这通常意味着有人向您发送邮件和收到邮件之间的延迟。 在Mailman的情况下,如果Mailman的消息延迟了一个小时,则会使系统感到无响应 - 特别是对于新用户。 它也使测试变得麻烦。 您不需要关闭它 - 下一个位是可选的。
编辑/etc/postfix-policyd.conf
:
[...] GREYLISTING=0 [...]
现在重新启动Postfix策略:
/etc/init.d/postfix-policyd restart
7.配置邮递员
我们要告诉Mailman从@ example.com发送邮件,而不是@ lists.example.com。 然而,它发送的所有链接需要来自lists.example.com域。 这是因为我们要为Mailman设置一个虚拟域。
pico /etc/mailman/mm_cfg.py
[...] DEFAULT_URL_PATTERN = 'http://%s/' [...] DEFAULT_EMAIL_HOST = 'example.com' [...] DEFAULT_URL_HOST = 'lists.example.com'
8.配置Apache
我们差不多完成了 只要我们转到lists.example.com,我们只需配置Apache服务器即可为Mailman网站提供服务。 不要忘记在/ etc / hosts或您的域名服务器中设置此域。
pico /etc/apache2/sites-available/mailman
ScriptAlias /cgi-bin/mailman/ /usr/lib/cgi-bin/mailman/ Alias /pipermail/ /var/lib/mailman/archives/public/ Alias /images/mailman/ /usr/share/images/mailman/ <Directory /usr/lib/cgi-bin/mailman/> AllowOverride None Options ExecCGI AddHandler cgi-script .cgi Order allow,deny Allow from all Satisfy Any </Directory> <Directory /var/lib/mailman/archives/public/> Options FollowSymlinks AllowOverride None Order allow,deny Allow from all </Directory> <Directory /usr/share/images/mailman/> AllowOverride None Order allow,deny Allow from all </Directory> <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>
现在我们只需要启用这个虚拟主机。
a2ensite mailman
mkdir /var/www/lists
apache2ctl restart
9.创建您的第一个列表
第一个邮件列表始终是“邮递员”。 要创建此列表,请运行:
newlist mailman
填写管理员的电子邮件地址和密码。 它将提示您按Enter键通知管理员。 当您这样做时,您将不会立即收到电子邮件。 我们还有一步要做:
/etc/init.d/mailman start
一旦这样做,列表管理员应该收到一个电子邮件,其中包含指向新列表的管理界面的链接。
如果这样做,您还需要测试订阅(只需发送一封空白邮件到mailman-subscribe@example.com)。 如果您收到订阅确认,并且您可以点击该链接,那么很可能一切都在100%。 如果没有,恐慌! 我的意思是看看/var/log/mail.log
来了解发生了什么问题。
提示:要密切注意邮件日志,请使用:
tail -f /var/log/mail.log
如果您需要尝试重新创建邮件列表,请先运行:
rmlist mailman
10.创建更多列表
要创建名为“listname”的列表,首先将新列表的别名添加到MySql vmail数据库中的别名表中:
INSERT INTO `alias` (`address`, `goto`, `name`, `moderators`, `accesspolicy`, `domain`, `created`, `modified`, `expired`, `active`) VALUES ('listname@example.com', 'listname@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('listname-admin@example.com', 'listname-admin@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('listname-bounces@example.com', 'listname-bounces@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('listname-confirm@example.com', 'listname-confirm@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('listname-join@example.com', 'listname-join@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('listname-leave@example.com', 'listname-leave@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('listname-owner@example.com', 'listname-owner@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('listname-requests@example.com', 'listname-requests@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('listname-subscribe@example.com', 'listname-subscribe@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1), ('listname-unsubscribe@example.com', 'listname-unsubscribe@lists.example.com', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1);
一旦完成,运行此命令创建一个新的列表:
newlist listname
与您的新Mailman服务器玩得开心! 我希望你创建一些很棒的电子邮件社区。