CentOS7.9部署邮件服务器Postfix+Dovecot+SSL+Rainloop

最近闲来无事,想起了七年前想搞的邮件服务器,这东西折腾了七年,现在才算搞明白

环境:
1
2
3
4
5
6
7
8
1、CentOS7.9  
2、Postfix3
3、Dovecot
4、PHP71
5、域名  
6、SSL证书
7、RainLoop
8、服务器商放通25端口
1、配置域名MX和A记录

戴戴的Linux
戴戴的Linux

2、部署基础环境
1
yum -y install nginx*

如果报没有nginx这个包,可以参考我的这个帖子
https://daishenghui.club/2019/01/24/categories/Linux/Centos7_Build_LNMP_Server/

1
2
3
4
5
6
7
yum -y install epel-release
yum -y remove postfix*
yum -y install https://mirror.ghettoforge.org/distributions/gf/el/7/plus/x86_64/postfix3-3.7.4-1.gf.el7.x86_64.rpm
// 如果链接过期了可以直接访问https://mirror.ghettoforge.org/distributions/gf/el/7/plus/x86_64/ 来安装最新版本
yum -y install dovecot*
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install php71w php71w-common php71w-fpm php71w-opcache php71w-mysqlnd php71w-gd php71w-mbstring php-dom

2.1 创建个存放SSL证书的文件夹并将申请好的证书放进去,然后重命名成server.crt和server.key
1
mkdir -p /www/cert/
3、配置Postfix3和dovecot
3.1 postfix分为client和server,client是往外发邮件的,server是接收邮件的。我们发邮件要用465,所以设置的是client,配置项以smtp_开头。smtpd_是服务器配置。
1
vim /etc/postfix/main.cf
3.2 有注释的去掉注释,没注释的手动添加上去
1
2
3
4
5
6
7
8
9
myhostname = mail.abc.com  //这里填你刚才设置好的域名
mydomain = mail.abc.com //这里同上
myorigin = $myhostname
append_dot_mydomain = yes
inte_interfaces = all
mydestination = $myhostname, $mydomain
unknown_local_recipient_reject_code = 550
mynetworks = 0.0.0.0/0
smtpd_banner = $myhostname ESMTP $mail_name
3.3 在配文的最后添加这些
1
2
3
4
5
6
smtpd_use_tls = yes
smtpd_tls_cert_file = /www/cert/server.crt
smtpd_tls_key_file = /www/cert/server.key
smtpd_tls_auth_enable = yes
broken_ssl_auth_clients = yes
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
1
vim /etc/dovecot/conf.d/10-ssl.conf
3.4 有注释的去掉注释,没注释的手动添加上去
1
2
3
ssl = yes
ssl_cert = </www/cert/server.crt
ssl_key = </www/cert/server.key
3.5 到这里,在邮件客户端开启SSL收件应该已经不成问题,但是还无法发邮件。
3.6 先来自动生成tls client端的配置项。只有tls配置是默认时此命令才有效,否则不会更改配置文件。
1
postfix tls enable-client

执行结束后/etc/postfix/main.cf中应该会自动添加下面这些东西

戴戴的Linux

1
vim /etc/dovecot/dovecot.conf
3.7 有注释的去掉注释,没注释的手动添加上去
1
2
3
protocols = imap pop3 lmtp
listen = *
login_trusted_networks = 0.0.0.0/0
1
vim /etc/dovecot/conf.d/10-mail.conf
3.8 取消这行的注释
1
mail_location = mbox:~/mail:INBOX=/var/mail/%u
1
vim /etc/dovecot/conf.d/10-auth.conf
3.9 有注释就去掉,没有这行就手动添加下,有的话,把它改成no
1
disable_plaintext_auth = no
1
vim /etc/postfix/master.cf
3.10 改成这样

戴戴的Linux

戴戴的Linux

4、重启Postfix3和Dovecot
1
systemctl restart postfix dovecot
5、创建邮箱用户
1
2
useradd test
echo "123456" | passwd --stdin test
5.1 给用户创建目录
1
2
3
su - test
mkdir -p mail/.imap/INBOX
chmod -R 750 ~/mail/
5.2 要给/var/mail下的用户配置权限,不然会报 imap(dsh): Error: fchown(/home/test/mail/.imap/INBOX, group=12(mail)) failed: Operation not permitted (egid=1000(test), group based on /var/mail/test

官网文档
戴戴的Linux

1
chmod 0600 /var/mail/*

6、向服务器提供商申请开通25端口

注意,这是最重要的一步,少了这步就没办法发送邮件,因为根据相关规定,服务器提供商默认是关闭了25端口的,我看了很多帖子,大致就是说两种解决方法
第一种就是把邮件发到第三方(比如阿里邮箱、163邮箱,QQ邮箱等),由三方邮箱进行转发
第二种使用iptables把25口转发到465上进行发信
第一种不现实,因为部署邮箱就是要发信,如果需要通过三方转发,那直接用三方的不就好了
第二种我试过了,行不通,因为通信还是跟对方的25通信,你再怎么转发都绕不过这个。
我是阿里云,所以我需要向阿里云提交申请开通服务器的25端口,不然你只能收信不能发信

7、部署RainLoop这个webmail
7.1 到RainLoop下载安装包

官网是https://www.rainloop.net

1
2
3
4
5
6
wget https://www.rainloop.net/repository/webmail/rainloop-latest.zip
mkdir -p /www/rainloop
mv rainloop-latest.zip /www/rainloop
cd /www/rainloop
unzip rainloop-latest.zip
chmod -R 777

1
vim /etc/nginx/conf.d/rainloop.conf
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
51
52
53
54
55
56
57
server {
listen 81;
server_name mail.abc.com;
access_log /etc/nginx/logs/access.log;
error_log /etc/nginx/logs/error.log;

location / {
root /www/rainloop/;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

location ~ \.php$ {
root /www/rainloop/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name;
include fastcgi_params;
}
location ^~ /data {
deny all;
}
}
server {
listen 4433 ssl;
server_name mail.abc.com;
ssl on;
root /www/rainloop/;
index index.html index.htm;
ssl_certificate /www/cert/server.crt;
ssl_certificate_key /www/cert/server.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root /www/rainloop/;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
root /www/rainloop/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name;
include fastcgi_params;
}
location ^~ /data {
deny all;
}
}
7.2 重启Nginx
1
systemctl restart nginx
8、配置RainLoop
8.1 登陆rainloop后台

http://mail.abc.com:81/?admin
默认帐号是admin 密码是123456
戴戴的Linux
戴戴的Linux

8.2 登陆邮箱进行邮件收发测试

http://mail.abc.com:81
帐号是刚才创建的test 密码是123456
戴戴的Linux
戴戴的Linux
戴戴的Linux

这样就完成了邮件服务器部署,有问题欢迎找我一起探讨。

关注我的公众号吧~戴戴的Linux

文章目录
  1. 1. 最近闲来无事,想起了七年前想搞的邮件服务器,这东西折腾了七年,现在才算搞明白
    1. 1.1. 环境:
    2. 1.2. 1、配置域名MX和A记录
    3. 1.3. 2、部署基础环境
      1. 1.3.1. 2.1 创建个存放SSL证书的文件夹并将申请好的证书放进去,然后重命名成server.crt和server.key
    4. 1.4. 3、配置Postfix3和dovecot
      1. 1.4.1. 3.1 postfix分为client和server,client是往外发邮件的,server是接收邮件的。我们发邮件要用465,所以设置的是client,配置项以smtp_开头。smtpd_是服务器配置。
      2. 1.4.2. 3.2 有注释的去掉注释,没注释的手动添加上去
      3. 1.4.3. 3.3 在配文的最后添加这些
      4. 1.4.4. 3.4 有注释的去掉注释,没注释的手动添加上去
      5. 1.4.5. 3.5 到这里,在邮件客户端开启SSL收件应该已经不成问题,但是还无法发邮件。
      6. 1.4.6. 3.6 先来自动生成tls client端的配置项。只有tls配置是默认时此命令才有效,否则不会更改配置文件。
      7. 1.4.7. 3.7 有注释的去掉注释,没注释的手动添加上去
      8. 1.4.8. 3.8 取消这行的注释
      9. 1.4.9. 3.9 有注释就去掉,没有这行就手动添加下,有的话,把它改成no
      10. 1.4.10. 3.10 改成这样
    5. 1.5. 4、重启Postfix3和Dovecot
    6. 1.6. 5、创建邮箱用户
      1. 1.6.1. 5.1 给用户创建目录
      2. 1.6.2. 5.2 要给/var/mail下的用户配置权限,不然会报 imap(dsh): Error: fchown(/home/test/mail/.imap/INBOX, group=12(mail)) failed: Operation not permitted (egid=1000(test), group based on /var/mail/test
    7. 1.7. 6、向服务器提供商申请开通25端口
    8. 1.8. 7、部署RainLoop这个webmail
      1. 1.8.1. 7.1 到RainLoop下载安装包
      2. 1.8.2. 7.2 重启Nginx
    9. 1.9. 8、配置RainLoop
      1. 1.9.1. 8.1 登陆rainloop后台
      2. 1.9.2. 8.2 登陆邮箱进行邮件收发测试
    10. 1.10. 这样就完成了邮件服务器部署,有问题欢迎找我一起探讨。


本站总访问量 本文总阅读量