用Centos搭建自己的邮件服务器

今天主要是闲的无聊,买的VPS不能白白的浪费掉啊,就搭个邮件服务来玩,使用的是Postfix和Dovecot来搭建,用Foxmail客户端登陆测试收信、发信均没问题
先了解几个email有关的名词:

  • MUA:用户代理端,即用户使用的写信、收信客户端软件
  • MTA:邮件传送端,即常说的邮件服务器,用于转发、收取用户邮件。
  • MDA:邮件代理端,相当于MUA和MTA的中间人,可用于过滤垃圾邮件。
  • POP:邮局协议,用于MUA连接服务器收取用户邮件,通信端口110。
  • IMOP:互联网应用协议,功能较POP多,通信端口143。
  • SMTP:简单邮件传送协议,MUA连接MTA或MTA连接MTA发送邮件使用此协议,通信端口25。

postfix正是提供MTA功能的开源软件,是用来收发邮件的,它没有web页面,所以要配合本地的MUA(类似于foxmail,outlook之类的软件)来进行可视化的邮件管理操作。
Dovecot 是一个开源的IMAP 和POP3 邮件服务器,支持Linux/Unix 系统。作为IMAP和POP3服务器,Dovecot为邮件用户代理(MUA)提供了一种访问服务器上存储的邮件的方法(简单理解为检测用户的合法性)。但是,Dovecot并不负责从其他邮件服务器接收邮件。Dovecot只是将已经存储在邮件服务器上的邮件通过MUA显示出来。

好了下面就开始干吧

安装Postfix和Dovecot

在安装之前,首先我们先卸载默认的sendmail(如果有的话),因为它是系统默认的MTA程序

1
yum remove sendmail

然后就可以安装了:

1
2
yum install postfix
yum install cyrus*

cyrus函数库为postfix的stmp提供安全的验证支持
修改MTA(默认邮件传输代理)

1
alternatives --config mta

检查一下是不是已经设置成功了。

1
alternatives --display mta

第一行可以看到mta的状态。 例如:mat - status is manual.
安装Dovecot:

1
yum install dovecot

设置域名解析

需要添加两条记录,如果要设置过滤垃圾邮件的规则的话,还要再加一条,关键字:SPF和TXT记录类型
设置后一段时间后才会生效,10几分钟吧

主机记录 记录类型 记录值 MX优先级
@(不填即可,默认会给这个) MX mail.bfchengnuo.com 10
mail A 服务器的公网IP -

下面再说说这两条记录的作用

  • MX 记录
    这是为邮件服务器专门设计的,用于指定负责处理发往收件人域名的邮件服务器,简单邮件传输协议(SMTP)会根据 MX 记录的值来决定邮件的路由过程。
    比如用 Gmail 往 163 发邮件,因为不是一个域的,在“转发”的过程中需要根据收信人地址(@163.com)查找 DNS 以确定对方域的 IP ,这样才能正确的投递
  • A 记录
    这个是为了免登陆的,正常情况下,我们发邮件需要登陆自己的账户,那么 Gmail 往 163 进行“转发”也是在发邮件,这个过程显然不可能也要进行登陆,这就用到了 A 记录
    Gmail 转发邮件时通过 ehlo 打招呼的时候表明自己的邮件服务器域,也就是类似 mail.gmail.com 这样的,就是指向发邮件的服务器;
    对方(163)收到后进行确认,拿着这个地址查 DNS,找出对应的 IP,然后核对发送人是不是这个 IP,这样就可以确认发送人是服务器而不是个人用户,就不需要登陆了

大型的邮件系统收信服务器和发信服务器不会是在一台物理服务器上,比如基本都是 imap.gmail.com 收信服务器;smtp.gmail.com 发信服务器;对应着协议,以及现在用的比较少的 POP3

POP3 协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。
而 IMAP 提供 webmail 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。
http://help.163.com/10/0203/13/5UJONJ4I00753VB8.html

配置Postfix

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
vi /etc/postfix/main.cf

#大约在75行,postfix主机名,修改成你的域名 此项需要添加A记录并指向postfix所在主机公网IP
myhostname = mail.bfchengnuo.com

#大约在83行,后面为主机域名
mydomain = bfchengnuo.com

#大约在100行,设置postfix邮箱的域名后缀为$mydomain
myorigin = $mydomain

#大约在117行
#指定postfix系统监听的网络接口
#若注释或填入公网ip 服务器的25端口将对公网开放
#默认值为all 即监听所有网络接口
#此项指定localhost后 本机postfix就只能发邮件不能接收邮件
inet_interfaces = all

#大约在120行,指定网络协议
inet_protocols = ipv4

#大约在165行
#指定postfix接收邮件时收件人的域名,换句话说,也就是你的postfix系统要接收什么样的邮件。
#此项配置中$myhostname表示postfix接受@$myhostname为后缀的邮箱的邮件 逗号分割支持指多项
#此项默认值使用myhostname
mydestination = $myhostname, localhost.$mydomain, localhost

#大约在266行
#指定你所在的网络的网络地址
#这里我填的依次是公网IP、内网IP、本地IP
#请依据实际情况修改
mynetworks = 40.120.xxx.xxx, 10.200.xx.xxx, 127.0.0.1

#大约在571行
#指定MUA通过smtp连接postfix时返回的header头信息
#原始配置附带有postfix版本号 去掉即可,此项酌情处理
smtpd_banner = $myhostname ESMTP

#SMTP Config ,将下面的内容添加到文件尾部即可
# 规定邮件最大尺寸为10M
message_size_limit = 10485760
# 规定收件箱最大容量为1G
mailbox_size_limit = 1073741824
# SMTP认证
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject

修改好了之后使用/etc/rc.d/init.d/postfix start开启postfix
使用chkconfig postfix on将postfix开机启动。

其中,myhostname 还有说是运行 hostname 命令返回的结果,如果不成功,可尝试

配置Dovecot

还是修改配置文件,注意要修改的文件比较多,跟着改即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
vi /etc/dovecot/dovecot.conf
# 26行: 如果不使用IPv6,请修改为*
listen = *

vi /etc/dovecot/conf.d/10-auth.conf
# 9行: 取消注释并修改
# 是否允许在沒有 SSL/TLS 下以明码登录
disable_plaintext_auth = no
# 97行: 添加
auth_mechanisms = plain login

vi /etc/dovecot/conf.d/10-mail.conf
# 30行: 取消注释并添加
mail_location = maildir:~/Maildir

vi /etc/dovecot/conf.d/10-master.conf
# 88-90行: 取消注释并添加 Postfix smtp 验证
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}

# 开启服务和加入开机启动
/etc/rc.d/init.d/dovecot start
chkconfig dovecot on

使用

一切都弄好以后,就可以使用Foxmail等第三方软件来收发邮件了。
在这里需要说一下,系统用户就是邮件的用户,例如root,就是一个邮箱用户,邮箱是[email protected],密码就是root的密码,所以需要创建用户,只要使用useradd创建用户,再使用passwd设置密码。
不建议使用root用户来测试,还是useradd一个admin用户比较好

如果使用的是Foxmail,输入E-mail地址和密码后,选择接收服务器类型是IMAP,邮件账号是你的用户名(不是邮箱地址)
下面的IMAP和SMTP服务器保持默认的mail.bfchengnuo.com即可

还有就是:一定别忘了开启服务器的相应的端口!比如基本的143和25端口,对应上面的两个服务
就酱!

相关问题

  • 启动 postfix 服务提示找不到?
    试试 service postfix start 或者 systemctl start postfix
    顺便可使用 service postfix reload 刷一下配置
  • 出现意外情况?查看日志
    查看 /var/log/maillog 下的日志或许会有些帮助,然后放到 Google 上

PS:后来换阿里云的测试….谁能想阿里云防垃圾邮件默认封杀 25 端口,需要申请解封,心累…

参考

Dovecot是什么
http://lomu.me/post/linux-email-server

喜欢就请我吃包辣条吧!

评论框加载失败,无法访问 Disqus

你可能需要魔法上网~~