centos7 搭建postfix 邮件服务器
一、邮件系统的简单介绍
- 电子邮件系统基于邮件协议来完成电子邮件的传输,常见的邮件协议有下面这些。
- 简单邮件传输协议(Simple Mail Transfer Protocol,SMTP):用于发送和中转发出的电子邮件,占用服务器的25/TCP端口。
- 邮局协议版本3(Post Office Protocol 3):用于将电子邮件存储到本地主机,占用服务器的110/TCP端口。
- Internet消息访问协议版本4(Internet Message Access Protocol 4):用于在本地主机上访问邮件,占用服务器的143/TCP端口。
- 一个最基础的电子邮件系统肯定要能提供发件服务和收件服务,为此需要使用基于SMTP协议的Postfix服务程序提供发件服务功能,并使用基于POP3协议的Dovecot服务程序提供收件服务功能。这样一来,用户就可以使用Outlook Express或Foxmail等客户端服务程序正常收发邮件了。
二、准备工作
系统:CentOS 7
软件:postfix,dovecot
域名:拥有自己的域名
三、搭建准备
修改主机名
# 语法 hostnamectl set-hostname mail.域名 # 例: hostnamectl set-hostname mail.abc.com vi /etc/hosts 172.17.0.3 lhrcentos76 mail.lhr.com
四、邮箱软件安装配置
安装并配置postfix
- 软件说明
postfix是提供发件服务的(注意:修改配置文件需备份,以下步骤未包含备份。)
postfix服务程序主配置文件中的重要参数。
参数 | 作用 |
---|---|
myhostname | 邮局系统的主机名 |
mydomain | 邮局系统的域名 |
myorigin | 从本机发出邮件的域名名称 |
inet_interfaces | 监听的网卡接口 |
mydestination | 可接收邮件的主机名或域名 |
mynetworks | 设置可转发哪些主机的邮件 |
relay_domains | 设置可转发哪些网域的邮件 |
- 安装postfix
yum install postfix
vim /etc/postfix/main.cf # 修改内容: # 75行: 取消注释,设置hostname myhostname = mail.abc.com # 83行: 取消注释,设置域名 mydomain = abc.com # 99行: 取消注释 myorigin = $mydomain # 116行: 默认是localhost,我们需要修改成all inet_interfaces = all # 119行: 推荐ipv4,如果支持ipv6,则可以为all inet_protocols = ipv4 # 164行: 添加 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain # 264行: 取消注释,指定内网和本地的IP地址范围 mynetworks = 127.0.0.0/8 # 419行: 取消注释,邮件保存目录 home_mailbox = Maildir/ # 571行: 添加 smtpd_banner = $myhostname ESMTP # 添加到最后 # 规定邮件最大尺寸为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
开启postfix服务并添加到系统自启
systemctl restart postfix systemctl enable postfix
安装并配置dovecot
安装dovecot
yum install dovecot
编辑文件dovecot.conf
vim /etc/dovecot/dovecot.conf # 更改内容: # 26行: 如果不使用IPv6,请修改为* listen = * #在主配置文件中的第48行,设置允许登录的网段地址,也就是说我们可以在这里限制只有来自于某个网段的用户才能使用电子邮件系统。如果想允许所有人都能使用,则不用修改本参数 login_trusted_networks = 192.168.10.0/24更改内容
编辑文件10-auth.conf
vim /etc/dovecot/conf.d/10-auth.conf # 更改内容: # 9行: 取消注释并修改 disable_plaintext_auth = no # 97行: 添加 auth_mechanisms = plain login
编辑文件10-mail.conf
vim /etc/dovecot/conf.d/10-mail.conf # 更改内容: # 30行: 取消注释并添加 mail_location = maildir:~/Maildir
编辑文件10-master.conf
vim /etc/dovecot/conf.d/10-master.conf # 更改内容: # 88-90行: 取消注释并添加 # Postfix smtp验证 unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix }
注意:如果我们没有使用ssl的话需要进行下面的操作。使用了则不需要。
编辑文件10-ssl.conf
vim /etc/dovecot/conf.d/10-ssl.conf # 更改内容: # 8行: 将ssl的值修改为 ssl = no
- 开启dovecot服务并添加到系统自启
systemctl restart dovecot systemctl enable dovecot
五、收发邮件测试
- 创建用户 lhr为登陆密码
useradd admin echo "admin:lhr" | chpasswd
- 使用FOXMAIL登陆
1中我们需要选择我们之前开放端口对应的服务器类型。
2中 我们只需要填入我们的用户名,例如admin,root
3中 我们收件和发件都填入我们的mail.域名。例 mail.abc.com
4 中 我们如果使用了ssl的话就需要勾选,如果没有使用的话就不需要勾选
注意事项
我们邮件服务器在设定mynetworks 这个值的时候,一行不要设置all,因为会有很多服务器会将你的服务器作为中转邮件服务器,最终导致的你的邮件服务器发送的邮件被qq,163,gamil,这些邮件服务商标记为垃圾邮件。
当某天我们检查我们的mail日志(/var/log/maillog)时发现很多邮件发送,而且邮件不是我们自己产生的话,那么我们的邮件服务器是出了问题的
这时我们服务器一定有很多邮件堆积,然后自己邮件会发不出去。
我们需要做的操作:检查
du -sh /var/spool/postfix/*
查看目录下的defer和deferred的目录大小,通过postqueue –p来查看队列的邮件,通过postsuper -d ALL 删除所有的队列邮件。
在本机测试一下发信功能是否正常。命令行中的测试工作可以通过telnet命令进行。例如:可以连接到邮件服务器的25端口,并输入相关的SMTP命令, 以邮件账户yxz@topsecedu.com作为发件人, 给cqq@topsecedu.com发送一封测试邮件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
-- 发邮件测试 [root@lhroggdirector /] # telnet mail.lhr.com 25 Trying 172.17.0.2... Connected to mail.lhr.com. Escape character is '^]' . 220 mail.lhr.com ESMTP helo mail.lhr.com 250 mail.lhr.com mail from: lhr@lhr.com 250 2.1.0 Ok rcpt to: lhrbest@qq.com 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> helo: this is a test . 250 2.0.0 Ok: queued as 2935C2407FC quit 221 2.0.0 Bye Connection closed by foreign host. |
参考链接:http://blog.itpub.net/26736162/viewspace-2719180/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)