Debian 7 下电子邮件系统的搭建(apache2 + postfix + dovecot + rainloop + mysql)

这两天心血来潮,准备在Debian 7 下搭建一个电子邮件系统,然后就去学习了一下。
根据度娘定义:电子邮件系统由用户代理MUA(Mail User Agent)以及邮件传输代理MTA(Mail Transfer Agent),MDA(Mail Delivery Agent)邮件投递代理组成。
Mail User Agent (MUA):邮件使用者代理人,这是使用者用来写信、收信的程序。例如,我们常用的 Outlook Exporess、Thunderbird 等。它的作用在于提供使用者一个好用的收发信件接口,并将信传到自己的邮件服务器。这个一般不需要自己弄,我在安卓手机上用gmail客户端,win7电脑上用foxmail客户端,当然在手机和电脑上都可以使用浏览器,通过webmail访问邮箱,我使用的是rainloop,它是使用MUA方式在服务器上实现的webmail解决方案。
Mail Delivery Agent (MDA):邮件递送代理人,负责将要给本地使用者的邮件分配到使用者的信箱中。在 UNIX 中,MDA 通常是 mail 这支程序。
Mail Transfer Agent (MTA):邮件转送代理人,是一个负责转送信件的服务器。UNIX 中使用的 Sendmail、Postfix 就是 MTA 软件。它的作用在于收到 MTU 寄来的信后,根据信件地址,将信件转送到目的地。在目的地中,也有另一台 MTA 会负责接收信件。有时候信件并不会一次就从使用者的计算机传送到目的地的主机,而是会经由许多 MTA 转送到目的地的主机。这种 MTA 接收非自己的信件,并转送到别台 MTA 的动作就叫作「Relay」。

另外,还需要了解到:
POP3
POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。
IMAP
IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。
区别:
POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。而IMAP提供webmail 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。
SMTP
SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。
增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。

当然,为了实现这些功能还需要装一些辅助软件,例如web服务器软件,数据库软件等等。
我所用的软件包括:
1). web服务器:apache2
2). MTA & MDA(实现SMTPS):postfix
3). IMAP 和 POP3电子邮件服务器:dovecot
4). 数据库软件:mysql
5). webmail(MUA模式):rainloop免费版
6). 交互网页语言支持:php
7). 后台管理软件:postfixadmin

0、安装前准备工作:

a.申请一个域名,DNS绑定vps的ip地址,添加spf记录,做好反向DNS(Reverse DNS)解析

找个国外的域名供应商,千万别买国内的。。。国外的可以找name.com或者godaddy上搜一个,然后注册,绑定vps的公网ip地址,添加spf记录(Sender Policy Framework。翻译过来就是发信者策略架构,SPF是为了防范垃圾邮件而提出来的一种DNS记录类型,它是一种TXT类型的记录,它用于登记某个域名拥有的用来外发邮件的所有IP地址。),防止你的邮件服务器发出的信被认为是垃圾邮件。
我添加了两个spf,分别是v=spf1 ip4:我的IP ~all 和 v=spf1 mx -all,另外还在vps供应商处做了反向DNS的解析。

b.在vps中添加hostname

1).修改 /etc/hostname 添加一个名字,例如:holycoco。

2).使之生效。

3).修改 /etc/hosts,添加一些内容,如果网站是example.com,就这样写,如果网站是别的就填别的。

4).检查host。

前者应该显示holycoco,后者应该显示holycoco.example.com,千万别略过这步骤,否则会后悔的。。。

1、安装apache2

a.安装

b.由于我的vps内存只有1GB所以进行优化:

c.重启服务

d.禁用apache默认设置,创建一些文件夹,做一些配置

e.为了支持多个域名,编辑内容如下,(重启apache以后可能会有warning,因为还没建后面几个文件夹)

f.使配置文件生效,重启服务

2、安装mysql

a.安装

设置完root的密码,一定要自己记录下来。。。
另外安全设置时要删除匿名用户,删除默认测试数据库,禁止root远程登录

b.为1GB内存进行优化

c.创建数据库,后面要用:

d.重启数据库服务

这里可以不建表,因为装postadmin的时候会建的。。。

3、安装php支持

a.安装

b.为1GB内存进行优化,修改部分内容

c.记录日志,重启web服务,加载php模块

4.安装postfix和dovecot

a.安装

弹出的框里面Postfix configuration选Internet Site,System mail name填入example.com,如果网站是别的就填别的。

b.配置postfix,限制用户邮箱大小等一系列东东,用户认证使用dovecot,而不是默认的virtual_mailbox

/etc/postfix/main.cf 参数必须顶格写。。。。。。。。。。。。内容为:

virtual_uid_maps 和 virtual_gid_maps 改成postfix用户的uid和gid ,可用 id postfix 命令获取
注:postfix服务重启后会有warning,据说可以别理它。。。

c.添加数据库查询配置文件,用来认证用户登录时候的sql语句

这些表现在还没建,后面装postfixadmin的时候会自动建的

这个是转发表查询

这个是domain表查询

这个是邮箱空间配额查询,不知道有没有用。。。

这个是最关键的登录查询了

d.配置开启哪些邮件服务

允许smtp走ssl,在端口 25,另外还有587和465(这个不懂),反正就是把submission和smtps前面注释去掉。

e.重启postfix服务

f.配置dovecot

检查权限

应该是这样

检查自签名证书,非常重要

强制ssl

重启dovecot服务

5.安装postfixadmin

a.下载安装postfixadmin

这时候/var/www/example.com/public_html/postfixadmin下应该有config.inc.php文件,否则就是再嵌了个文件夹了。。。

b.修改配置文件

汉化不完全的可以打开language下的cn.lang手工修改。。。

c.用浏览器访问Postfixadmin的设置页http://pfadmin.example.com/setup.php,会进行检查,各项ok后,最后自动生成数据表,shell下检查一下,如果是这些就ok了:

d.在浏览器页面下面创建Setup password,填复杂一些,点击“Generate password hash”获取hash代码,将代码拷贝到配置文件config.inc.php中的以下配置中

e.然后重启apache2服务:

f.再次访问http://pfadmin.example.com/setup.php,创建管理员的账号和密码
(需要正确输入之前创建的Setup password(填的不是hash值)才能创建管理员账号)
设置完成后要做一些安全工作

g.最后访问PostfixAdmin的登录页http://pfadmin.example.com/
使用管理员账号登录后,就可以添加domain和多用户邮箱什么的了。

6.安装rainloop

其实webmail有很多,为啥选这个呢,因为这个干净,纯php webmail前台页面,它并不创建一个数据库,应用直接访问邮件服务器来显示电子邮件。解压就能用,支持多国语言。

a.下载解压

这时候webmail目录下应该有个index.php,还有2个文件夹data和rainloop,否则又是嵌套了一层。

b.设置权限

c.直接访问管理页面进行配置:

URL : http://webmail.example.com/?admin
User : admin
Pass : 12345

登陆以后进行修改,设置复杂密码。

d.设置主要是修改几个地方:

Login 里面不要填default domain,如果你只有一个domain的话,选择Try to determine user domain
Domain 里面 add domain,然后点击新增的domain名字,填写imap和smtp信息,注意不要选use short login,我发现选了以后反而是disabled,不选反而ok。。然后smtp我选的是use php mail(),否则test通不过。
按上面的设置,正确的应该是:Port 993 for secure IMAP, Port 995 for secure POP3, and Port 25 with SSL for SMTP
大工告成!
访问http://webmail.example.com/ 就可以登录邮箱了。或者用第三方客户端进行设置以后也可以使用,第三方客户端设置时,接收服务可选IMAP 993 SSL(接受所有证书)或POP3 995 SSL(接受所有证书),发送服务选SMTP 25 STARTTLS(接收所有证书)。这里之所以用dovecot自签名的证书,是因为穷!商业证书都太贵了,土豪可以选Verisign。。。
最后发2个图。QQ图片20150215002753QQ图片20150215002946

参考文档:
1.https://www.linode.com/docs/getting-started
2.https://www.linode.com/docs/websites/hosting-a-website
3.https://www.linode.com/docs/email/running-a-mail-server
4.https://www.linode.com/docs/email/postfix/email-with-postfix-dovecot-and-mysql
5.http://help.163.com/09/1223/14/5R7P6CJ600753VB8.html
6.http://help.163.com/10/0203/13/5UJONJ4I00753VB8.html
7.http://www.sulabs.net/?p=311
8.http://www.tecmint.com/rainloop-webmail-a-modern-fast-web-based-email-client-for-linux/

发表评论

电子邮件地址不会被公开。 必填项已用*标注