阿里云是默认禁止使用25端口来发送邮件的,避免产生过多的邮件垃圾以17年的某个时间点为分界限,之前的买的服务器可以使用25端口,申请就可以了。之后购买的服务器申请开放25端口就比较难了,但是可以使用465端口。
使用465端口来发邮件需要使得ssl证书认证。
我使用的zabbix 是4.0
参考:https://www.cnblogs.com/along21/p/9849645.htm
1、关闭其它的邮件工具
[root@along ~]# systemctl stop sendmail
[root@along ~]# systemctl stop postfix
2、安装mailx
[root@along ~]# yum install mailx
3、开启smtp
在任何邮箱平台中开启smtp,开启后会得到一个授权码,这个授权码就代替了密码(自行去邮箱开启)。我使用的是163邮箱
4、请求数字证书(这里用的163邮箱,所以向163请求证书)
[root@along ~]# mkdir .certs
[root@along ~]# echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /root/.certs/163.crt
[root@along ~]# certutil -A -n "GeoTrust SSL CA" -t "C,," -d /root/.certs -i /root/.certs/163.crt
[root@along ~]# certutil -A -n "GeoTrust Global CA" -t "C,," -d /root/.certs -i /root/.certs/163.crt
[root@along ~]# certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d /root/.certs/./ -i /root/.certs/163.crt
Notice: Trust flag u is set automatically if the private key is present.
[root@along ~]# ls /root/.certs/
163.crt cert8.db key3.db secmod.db
[root@along ~]# certutil -L -d /root/.certs
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
GeoTrust SSL CA P,P,P
5、配置/etc/mail.rc
[root@along ~]# vim /etc/mail.rc
set from=xxx@163.com #之前设置好的邮箱地址
set smtp="smtps://smtp.163.com:465" #邮件服务器
set smtp-auth-user=xxx@163.com #之前设置好的邮箱地址
set smtp-auth-password=xxxx #授权码
set smtp-auth=login #默认login即可
set ssl-verify=ignore #ssl认证方式
set nss-config-dir=/root/.certs #证书所在目录
6、发送邮件测试
[root@along ~]# echo "邮件正文" | mail -s "邮件主题" xxx@qq.com
邮件发送成功
7、发送邮件测试
我们这个证书文件是给zabbix用户使用的,如果是在/root/.certs目录下,zabbix用户无法访问
发送邮件时会出现:Error initializing NSS: Unknown error -8015.
打开zabbix用户登录shell的登录权限/sbin/nologin=>/bin/bash
切换到zabbix用户并确认访问权限
su zabbix
ls: cannot open directory /root/: Permission denied 表示无法访问
查看/root目录权限
[root@izj6c62mggaelsvd28zx9lz ~]# ll -d /root
dr-xr-x---. 6 root root 4096 Jan 30 00:05 /root
是root目录的权限,文件所有者是root,文件的组也是root
第一组权限:文件所有者有读的权限
第二组权限:文件所有者的组用户有执行和读的权限
第三组权限:不与文件所有者同组的用户有执行的权限,但是没有读的权限。
当然对于root来说是拥有所有权限的,基本权限控制对root无效。
权限测试
[root@izj6c62mggaelsvd28zx9lz zabbix]# ll -d /etc/zabbix/
drwxr-xr-x 6 root root 4096 Jan 30 00:05 /etc/zabbix/
有执行权限没有写权限是创建不了文件的
bash-4.2$ touch /etc/zabbix/11.txt
touch: cannot touch ‘/etc/zabbix/11.txt’: Permission denied
bash-4.2$
[root@izj6c62mggaelsvd28zx9lz test]# ll -d /etc/zabbix/test
drwxr-xr-x 2 root root 4096 Jan 30 00:43 /etc/zabbix/test
[root@izj6c62mggaelsvd28zx9lz test]#
增加权限测试
[root@izj6c62mggaelsvd28zx9lz test]# chmod 777 /etc/zabbix/test/
[root@izj6c62mggaelsvd28zx9lz test]# ll -d /etc/zabbix/test
drwxrwxrwx 2 root root 4096 Jan 30 00:43 /etc/zabbix/test
[root@izj6c62mggaelsvd28zx9lz test]#
给了权限后可以创建文件
bash-4.2$ touch /etc/zabbix/test/1.txt
bash-4.2$ ls /etc/zabbix/test/
1.txt
bash-4.2$
将证书目录移动到zabbix用户可以访问到的地方
mv /root/.certs/ /etc/zabbix/.
bash-4.2$ ls /etc/zabbix/.certs/
163.crt cert8.db key3.db secmod.db
成功访问
修改/etc/mail.rc文件证书目录
[root@along ~]# vim /etc/mail.rc
set from=xxx@163.com #之前设置好的邮箱地址
set smtp="smtps://smtp.163.com:465" #邮件服务器
set smtp-auth-user=xxx@163.com #之前设置好的邮箱地址
set smtp-auth-password=xxxx #授权码
set smtp-auth=login #默认login即可
set ssl-verify=ignore #ssl认证方式
set nss-config-dir=/etc/zabbix/.certs #证书所在目录
将zabbix用户的登录权限关闭