~ read.

在VPS上安装自己的企业邮局

原文地址:http://www.nsbeta.info/archives/237

博客域名nsbeta.info是在godaddy注册的,这几天发现不能访问godaddy网站,包括其企业邮局。于是想到用博客的VPS搭建一个自己的邮局,如下这篇笔记是2年前写的,现在拿出来照做一遍,很顺利就把邮局搭建好了。唯一的不同是原文用Apache提供webmail服务,而我现在前端是Nginx,所以在安装Apache时,需要将它的侦听端口改成非80端口,然后配置Nginx的反向代理,将/webmail/路径的请求,反向代理到Apache服务器。

原文内容如下:

我有一台Ubuntu Linux服务器,想快速开启邮件服务。例如,我的登录帐号是pyh,并且有一个域名example.com,那么如何把服务器配置成可收发[email protected]的邮件呢?在Ubuntu下,这些都很简单,几分钟就搞定。(注:我的VPS是Debian系统,使用过程一样,因为Ubuntu是Debian的分支)

假如服务器的IP地址是12.34.56.78,首先配置域名,给该IP地址分配一个名字,例如mail.example.com。然后,将example.com域的MX记录设置为mail.example.com,注意MX不能直接指向IP地址。

然后在Ubuntu里,运行如下命令安装Postfix(不想sudo的话就用root安装):

apt-get install postfix

Postfix是一个MTA(邮件传输代理)。为什么用Postfix呢?因为一是它是Ubuntu的默认MTA,安装简单;二是它的配置文件大家都懂。

安装Postfix后,再安装sqwebmail,执行:

apt-get install courier-authdaemon
apt-get install sqwebmail

courier-authdaemon和sqwebmail都是Courier-MTA的标准组件。前者提供统一验证服务。后者是一套C写的webmail,简单快速,运行它后就可以通过网页来收发电子邮件。

执行上述几个apt-get后,MTA和webmail就都安装好并启动了,pstree看一下:

|-courierlogger—authdaemond—5*[authdaemond]
|-courierlogger—sqwebmaild
|-master-+-anvil
| |-pickup
| |-qmgr
| `-tlsmgr

第三行的master是Postfix的主进程。

安装完后就是配置,包括如下几个步骤:

(一)配置CGI

sqewebmail是通过CGI来运行的,要在web服务器里配置好它们。
系统里需要安装Apache。Apache是最广泛使用的支持CGI的web server,它的配置也大家都懂。

修改httpd.conf,加入如下内容:

ScriptAlias /webmail/ /usr/lib/courier/courier/webmail/
<Directory “/usr/lib/courier/courier/webmail”>
AllowOverride None
Options None
Order allow,deny
Allow from all

第一行设置脚本目录别名,用户访问路径包含/webmail/,就定向到/usr/lib/courier/courier/webmail/,这是sqwebmail的可执行程序目录。第二行及后述行设置该目录可执行CGI。

然后,在Apache的文档目录(htdocs)里,设置一个符号链接:

ln -s /usr/share/sqwebmail .

将/usr/share/sqwebmail目录链接到Apache的文档根目录,这里放置sqwebmail的静态文件,如图片、CSS等。

设置完后,重启httpd。

(二)创建Maildir

切换到个人用户身份(如pyh),在家目录(/home/pyh)里,运行如下命令:

maildirmake Maildir
maildirmake -f Spam Maildir
maildirmake -q 100000000S ./Maildir
touch .courier
sudo cp -r Maildir /etc/skel
sudo cp .courier /etc/skel

上述创建好Maildir这个目录,用来存储个人邮件。
第三句设置Maildir的SIZE,单位是字节,这里设置为100M,今后可随时调整。

(三)配置Postfix

修改/etc/postfix/main.cf,改几个地方:

mydestination = 此处值里,加入个人域名example.com,表示允许Postfix接受该域的邮件,否则Postfix拒绝relay。

home_mailbox = Maildir/ 这里修改值为Maildir/,表示Postfix把信件投递到个人家目录的Maildir子目录里。后面的”/”不可少。

其他几个参数,比如myhostname、mydomain、myorigin也最好改成正确的地址,比如:

myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain

其中myhostname是SMTP会话里HELO命令对应的地址。mydomain和myorigin是默认的发信者域名,不过sqwebmail里也会配置好,所以这2个指令在这里并不是很重要。

还有个地方,如果mailbox_command = procmail -a “$EXTENSION”这句是打开的,要注释掉,否则不会投递到maildir。

Postfix是很强大的MTA,有大量参数可设置,用于控制邮件传输的各方面细节,不在此详述。

修改完配置文件后,重启Postfix:

/etc/init.d/postfix restart

(四)Courier相关配置

也只改动了两个地方,在/etc/courier下,修改defaultdomain文件(若没有就创建它),将邮件域名example.com写在里面,否则sqwebmail将默认使用本机的主机名作为sender域名(SMTP会话里的mail from命令对应的邮件域名),这很可能造成邮件发不出去。然后修改authdaemonrc文件,更改一个指令如下:

DEFAULTOPTIONS=”wbnochangingfrom=1″

表示禁止在webmail里修改From:地址(防止用户伪造其他人身份发信)。

最后,重启下验证服务和sqwebmail:

/etc/init.d/courier-authdaemon restart
/etc/init.d/sqwebmail restart

配置就完成了。
访问webmail,打开浏览器,将地址指向:

http://mail.example.com/webmail/webmail

在出来的页面里输入linux帐号(如pyh)和密码,就可以登录进去收发邮件。

当然,这里只是简单开启一个支持webmail收发邮件的mail server。要提供专业的邮件服务,还要设置虚拟用户、虚拟域、SMTP/POP3/IMAP、反垃圾、反病毒等,可以自己google相关文章。在howtoforge.com有很多类似的好文档。

comments powered by Disqus