# 5分钟就让你拥有自己的邮件服务器！postfix+dovecot实现最简单的邮件收发

**URL:** <https://4gfj4hgkj4as4.pages.dev/t/topic/26762>\
**Category:** 杂谈\
**Created:** [2024 年10 月 25 日 12:32 UTC](https://4gfj4hgkj4as4.pages.dev/t/topic/26762 "2024-10-25T12:32:52Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![age98](https://4gfj4hgkj4as4.pages.dev/user_avatar/4gfj4hgkj4as4.pages.dev/age98/32/3532_2.png) [@age98](https://4gfj4hgkj4as4.pages.dev/u/age98)\
**Post date:** [2024 年10 月 25 日 12:32 UTC](https://4gfj4hgkj4as4.pages.dev/t/topic/26762/1 "2024-10-25T12:32:52Z")

</div>

本教程本人亲自写的，是基于Centos7.9（8.X下也一样用），按教程一步一步下来，5分钟就能让你拥有自己的邮件服务器。  
  
只有SMTP/POP3/IMAP功能，适用于资源比较差的云主机环境。客户端可以通过foxmail/outlook去收发，或者挂到网易邮箱或QQ邮箱代收。  
  
以 **@fab.edu.org** 这个域名为例，以下脚本中出现的这个域名，请替换成自己的域名

以下脚本可能有些字符会被排版的原因吃掉，TXT格式的我放百度云盘，最好按这个去做，格式都对的  
** ~~\*\*~~~~ [color=red]~~通过百度网盘分享的文件：postfix配置-虚拟用户-单域.txt  
链接：https://pan.baidu.com/s/1SAvSIkLQn9xFGWpERRptIg?pwd=8888[/color]\*\***

#CentOS7.9下安装postfix+dovecot实现最简单的邮件服务器功能，可以实现SMTP和POP3邮件收发

#修改主机名  
hostnamectl set-hostname mail.fab.eu.org && bash

#关闭selinux  
sed -i "/SELINUX/s/enforcing/disabled/" /etc/selinux/config && setenforce 0

#安装postfix和dovecot  
yum -y install postfix dovecot vim net-tools

#防火墙端口放行，云主机的话放行25,110,143/tcp端口  
firewall-cmd --add-service={smtp,imap,pop3} --permanent && firewall-cmd --reload

#需要一个系统用户vmail作为收发邮件的账户，也就是说所有的邮件都是这个vmail用户的

groupadd -g 5000 vmail  
useradd -g 5000 -u 5000 vmail -s /sbin/nologin

#vim vmail\_mailbox #定义每一个虚拟用户邮件的存放位置，如下省去了根/home/vmail/，原因是主配置文件virtual\_mailbox\_base = /home/vmail 参数。注意后面"/"  
echo user01@fab.eu.org user01@fab.eu.org/Maildir/\>/etc/postfix/vmail\_mailbox  
echo user02@fab.eu.org user02@fab.eu.org/Maildir/\>\>/etc/postfix/vmail\_mailbox

#创建用户密码表  
vim /etc/dovecot/passwd-users-auth  
user01@fab.eu.org:{plain}AAaa1234  
user02@fab.eu.org:{plain}AAaa1234

#适用postconf修改配置 /etc/postfix/main.cf  
postconf -e "myhostname = mail.fab.eu.org"  
postconf -e "mydomain = fab.eu.org"  
postconf -e "myorigin = \$mydomain"  
postconf -e "mydestination = localhost,\$mydomain"  
postconf -e "mynetworks = 127.0.0.0/8"  
postconf -e "inet\_interfaces = all"  
postconf -e "inet\_protocols = ipv4"  
postconf -e "smtp\_address\_preference = ipv4"  
postconf -e "home\_mailbox = Maildir/"  
postconf -e "smtpd\_banner = $myhostname ESMTP"  
postconf -e "smtpd\_sasl\_type = dovecot"  
postconf -e "smtpd\_sasl\_auth\_enable = yes"  
postconf -e "broken\_sasl\_auth\_clients = yes"  
postconf -e "smtpd\_sasl\_path = private/auth"  
postconf -e "virtual\_mailbox\_base = /home/vmail"  
postconf -e "virtual\_mailbox\_maps = hash:/etc/postfix/vmail\_mailbox"  
postconf -e "virtual\_transport = virtual"  
postconf -e "virtual\_uid\_maps = static:5000"  
postconf -e "virtual\_gid\_maps = static:5000"

#本地域之间发件也需要登录验证  
postconf -e "smtpd\_sender\_restrictions =check\_sender\_access hash:/etc/postfix/sender,reject\_unauth\_destination"  
#邮件大小限制为20M，邮箱大小限制为5G。  
postconf -e "message\_size\_limit = 20485760"  
postconf -e "mailbox\_size\_limit = 5097152000"  
postconf -e "show\_user\_unknown\_table\_name = no"

#队列超时限制为1天。  
postconf -e "bounce\_queue\_lifetime = 1d"  
postconf -e "maximal\_queue\_lifetime = 1d"

echo fab.eu.org permit\_sasl\_authenticated, reject\>/etc/postfix/sender  
postmap /etc/postfix/sender /etc/postfix/vmail\_mailbox

#修改保存后检查配置文件是否有错  
postfix check

cat /etc/postfix/main.cf | grep -v ^# | grep -v ^$  
#启动postfix服务并添加开机自启  
systemctl start postfix && systemctl enable postfix

###配置dovecot####  
vim /etc/dovecot/dovecot.conf  
#修改以下配置

log\_path = /var/log/dovecot.log  
info\_log\_path = /var/log/dovecot-info.log  
auth\_verbose = yes  
passdb {  
driver = passwd-file  
args = /etc/dovecot/passwd-users-auth  
}  
userdb {  
driver = static  
args = uid=vmail gid=vmail home=/home/vmail/%u  
}

#修改/etc/dovecot/conf.d/10-master.conf文件  
vim /etc/dovecot/conf.d/10-master.conf  
unix\_listener /var/spool/postfix/private/auth {  
mode = 0666  
}

#修改其他配置文件  
sed -i 's|^#protocols = imap pop3 lmtp submission|protocols = imap pop3 lmtp submission|g' /etc/dovecot/dovecot.conf  
sed -i 's|^#listen = ~~\~~ \*, ~~\~~ : ~~\~~ :|listen = ~~\~~ \*, ~~\~~ : ~~\~~ :|g' /etc/dovecot/dovecot.conf  
sed -i 's| ~~^~~ ssl = required|ssl = no|g' /etc/dovecot/conf.d/10-ssl.conf  
sed -i 's|^#disable\_plaintext\_auth = yes|disable\_plaintext\_auth = no|g' /etc/dovecot/conf.d/10-auth.conf  
sed -i 's| ~~^~~ auth\_mechanisms = plain|auth\_mechanisms = plain login|g' /etc/dovecot/conf.d/10-auth.conf  
sed -i 's|^#mail\_location =|mail\_location = maildir:~/Maildir|g' /etc/dovecot/conf.d/10-mail.conf

#查看修改结果  
grep -Ev "^$|#" /etc/dovecot/conf.d/10-auth.conf | grep "disable\_plaintext\_auth ~~\~~ |auth\_mechanisms ="  
grep -Ev "^$|#" /etc/dovecot/conf.d/10-ssl.conf | grep "ssl ="  
grep -Ev "^$|#" /etc/dovecot/conf.d/10-mail.conf | grep mail\_location

#启动dovecot服务,并设置成开机自启动  
systemctl restart dovecot && systemctl enable dovecot

#用户测试  
echo AAaa1234 | doveadm auth test user01@fab.eu.org  
echo AAaa1234 | doveadm auth test user01@fab.eu.org

#端口查看  
ss -lnpt | grep "master ~~\~~ |dovecot"

#foxmail中配置时，用户名是user01 不带@后面的。每次用FOXMAIL测试时注意关闭重开，否则会提示密码错  
#有需要重启邮件服务的话，执行下面命令  
systemctl restart postfix && systemctl restart dovecot

#----------------------------  
#到域名服务商那，添加MX记录，A记录，TXT记录  
Type Name TXT Value TTL

A mail 61.188.142.177 #自己云主机的IP  
MX @ mail.fab.eu.org #指向自己的A记录mail  
TXT @ v=spf1 ip4:61.188.142.177 ~~~~~ all 600 #添加SPF记录，防止被当垃圾信

#-----------------------------  
#使用其他邮箱代收设置方法  
#163.com邮箱为例  
#设置-账号与邮箱中心，邮箱中心通过POP3自动收取，管理其他邮箱的邮件，立即创建，写邮箱账号，密码，高级设置里接收服务器写你公网邮件域名，如mail.fab.eu.org,端口110

---

<div class="post-metadata">

**Author:** ![James](https://4gfj4hgkj4as4.pages.dev/user_avatar/4gfj4hgkj4as4.pages.dev/james/32/1745_2.png) [@James](https://4gfj4hgkj4as4.pages.dev/u/James)\
**Post date:** [2024 年10 月 25 日 12:36 UTC](https://4gfj4hgkj4as4.pages.dev/t/topic/26762/2 "2024-10-25T12:36:08Z")

</div>

好文啊，最近刚好在搭:xhj06:

---

<div class="post-metadata">

**Author:** ![alay](https://4gfj4hgkj4as4.pages.dev/user_avatar/4gfj4hgkj4as4.pages.dev/alay/32/23_2.png) [@alay](https://4gfj4hgkj4as4.pages.dev/u/alay)\
**Post date:** [2024 年10 月 25 日 13:06 UTC](https://4gfj4hgkj4as4.pages.dev/t/topic/26762/3 "2024-10-25T13:06:53Z")

</div>

用起来咋样？有没有docker镜像？

---

<div class="post-metadata">

**Author:** ![age98](https://4gfj4hgkj4as4.pages.dev/user_avatar/4gfj4hgkj4as4.pages.dev/age98/32/3532_2.png) [@age98](https://4gfj4hgkj4as4.pages.dev/u/age98)\
**Post date:** [2024 年10 月 25 日 13:32 UTC](https://4gfj4hgkj4as4.pages.dev/t/topic/26762/4 "2024-10-25T13:32:12Z")

</div>

@“alay”#p128102 就是最简单的一个邮件系统，没有WEB界面，仅只是客户端的收发或通过QQ网易邮箱代收。主打一个简单和轻量，没容器镜像。
