安装iRedMail和邮件人在Debian挤压

在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服务器玩得开心! 我希望你创建一些很棒的电子邮件社区。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏