10分钟搭建一台Linux邮件服务器
我有一台Ubuntu Linux服务器,想快速开启邮件服务。例如,我的登录帐号是pyh,并且有一个域名example.com,那么如何把服务器配置成可收发pyh@example.com的邮件呢?在Ubuntu下,这些都很简单,几分钟就搞定。(注:我的是Ubuntu 9.10版本)
假如服务器的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/"
- 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个指令在这里并不是很重要。
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有很多类似的好文档。
Leave a comment