博客域名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
</Directory>
第一行设置脚本目录别名,用户访问路径包含/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有很多类似的好文档。