番外篇之局域网邮件服务搭建
因为代码管理发布的服务,大部分都对邮件有着要求,更如gerrit这类,不填写邮件地址,使用还会存在问题。
但是这时候我又不想填写我的邮箱,所以这一篇就是搭建一个本地的邮件服务,以解决邮件验证的问题。
关于邮件相关的知识这里就不再多说了,这里安装它仅仅是为了解决邮件问题,只是一个最基本的搭建演示
yu
2020.12
一、环境准备
配置IP与yum源等均不再赘述
1、主机名配置
[root@node ~]# hostnamectl set-hostname node4
[root@node4 ~]# vi /etc/hosts
# 架构内的其他机器也都写上好了,便于解析(node4后面还要搭建其他服务)
192.168.80.151 node1
192.168.80.152 node2
192.168.80.153 node3
192.168.80.154 node4
192.168.80.151 local.gitlab.com
192.168.80.152 local.sonar.com
192.168.80.153 local.gerrit.com
192.168.80.154 local.cicdmail.com
二、安装postfix
[root@node4 ~]# yum -y install postfix
# 默认centos7是安装了postfix,如果是更早的系统,应该默认是sendmail,记得卸载或者关闭sendmail,以防止端口冲突
修改配置文件
[root@node4 ~]# cd /etc/postfix/
备份配置文件
[root@node4 postfix]# cp -a main.cf main.cf.bak
修改
==注意,我以下所有的修改都是复制原行再去掉注释进行修改,建议是这样做==
[root@node4 postfix]# vim main.cf
# 修改为邮件服务器的主机名,建议是FQDN(一般是本机hostname),这里其实可以理解为设置的邮件服务器的地址(域名)
76 #myhostname = virtual.domain.tld
77 myhostname = local.cicdmail.com
# 修改为邮件服务器的主机名,默认是$myhostname减去第一部分,这里其实就是设置的我们邮件@后面的域名部分
84 #mydomain = domain.tld
85 mydomain = cicdmail.com
# 发送设置
# myorigin设置为等同于$mydomain即可,这是为了保证收发地址一致
101 #myorigin = $mydomain
102 myorigin = $mydomain
# 接收设置
# 注释掉 inet_interfaces = localhost
119 #inet_interfaces = localhost #因为我前面都是复制修改,所以这里如果前面不是和我一样的操作,肯定不是119行
# 指定此邮件系统接收邮件时的网络接口地址
116 #inet_interfaces = all
117 inet_interfaces = all
# 接收的IP类型,默认是all,也就是ipv4 ipv6都可以,所以这里修改或者不修改都行,我这里是注释掉all,复制一行修改为ipv4
123 #inet_protocols = all
124 inet_protocols = ipv4
# mydestination指定postfix收件时收件人的域名,这里默认启动的这条并不合适我们使用,注释掉,然后复制 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain 这行,并启用,也就是使用 接收$mydomain,$myhostname等为域名的邮件
169 #mydestination = $myhostname, localhost.$mydomain, localhost # 注释掉这行
170 #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
171 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 这里是配置邮件服务器所在网络的网络地址(不含主机位),用来区别用户是远程还是本地,如果使用postfix的时候,IP是在该网络范围内的,就允许使用,如果嫌麻烦,可以设置0.0.0.0/0 (测试环境)
270 #mynetworks = 168.100.189.0/28, 127.0.0.0/8
271 mynetworks = 168.100.80.0/24, 127.0.0.0/8
# 指定邮箱文件相对于用户主目录路径,一般就两种,一个是在用户的家目录下创建Maildir目录,然后每封邮件存为一个文件,还有一种是在/var/mail/下对应用户,所有邮件存储为一个文件,我这里是在家目录下
426 #home_mailbox = Maildir/
427 home_mailbox = Maildir/
如果没有进阶配置,比如认证啊啥的,其他参数默认就行了,这个文件就算配置完成
校验
查看有没有语法错误
[root@node4 postfix]# postfix check
启动服务
[root@node4 ~]# systemctl restart postfix
[root@node4 ~]# systemctl enable postfix
此时,25号端口应该就已经启动了。或者可以ps -ef 过滤下postfix
三、安装 dovecot
[root@node4 ~]# yum install dovecot -y
配置
[root@node4 postfix]# cd /etc/dovecot/
备份一下配置文件
[root@node4 dovecot]# cp -a dovecot.conf dovecot.conf.bak
# 其实这个文件没啥好改的,默认也行,或者修改下 30 #listen = *, :: 也行,修改为 listen = * 就行,也就是只监听ipv4
30 #listen = *, ::
31 listen = *
[root@node4 dovecot]# cd conf.d/
备份下
[root@node4 conf.d]# cp -a 10-auth.conf 10-auth.conf.bak
[root@node4 conf.d]# vim 10-auth.conf
# 这个配置时禁用明文登录的意思,默认只允许ssl,但是我这里并不想配证书,所以我将其改为 no,启用未验证的登录
10 #disable_plaintext_auth = yes
11 disable_plaintext_auth = no
[root@node4 conf.d]# cp -a 10-ssl.conf 10-ssl.conf.bak
[root@node4 conf.d]# vim 10-ssl.conf
# 因为我不使用ssl,相应的,这里也把ssl关掉
8 #ssl = required
9 ssl = no
[root@node4 conf.d]# cp -a 10-mail.conf 10-mail.conf.bak
[root@node4 conf.d]# vim 10-mail.conf
# 配置一个收件箱文件夹,我们前面在postfix配置中是选的家目录下的Maildir,这里对应上
24 # mail_location = maildir:~/Maildir
25 mail_location = maildir:~/Maildir
启动
[root@node4 ~]# systemctl start dovecot
[root@node4 ~]# systemctl enable dovecot
查看端口
[root@node4 ~]# ss -naltp|grep dovecot
[root@node4 conf.d]# ss -naltp|grep dovecot
LISTEN 0 100 *:110 *:* users:(("dovecot",pid=27375,fd=25))
LISTEN 0 100 *:143 *:* users:(("dovecot",pid=27375,fd=37))
四、测试
1、创建测试用户
[root@node4 conf.d]# useradd ops01 && echo "123456" | passwd --stdin ops01
Changing password for user ops01.
passwd: all authentication tokens updated successfully.
[root@node4 conf.d]# useradd ops02 && echo "123456" | passwd --stdin ops02
Changing password for user ops02.
passwd: all authentication tokens updated successfully.
2、使用foxmail等的客户端登录
推荐foxmail,有一些邮件APP登录这种自建邮件的情况,认证会有问题,还需额外配置
首先配置windows的hosts文件,完成域名解析
192.168.80.154 local.cicdmail.com
3、收发测试
ops01发送邮件给ops02