日常运维工作中,常常遇到一些问题,每次去服务器查看相当的麻烦。最近想通过linux服务器发送一下需要经常看的日志。由于以前没有接触过邮件服务器直接上手搞。走了不少的弯路。搞了一个下午没有搞定。主要原因是对原理不太了解(最详细的原理参考早年linxucat苏老师的经典教学)。尽管配置很简单。在不同的环境下遇到的问题也不一样。小编是在两台服务器下进行测试的。所以遇到了多个问题。一个单独立IP的服务器上,一个是腾讯云服务器。把遇到的问题都罗列一下。
1、发送邮件都需要安装什么软件
邮件发送非常复杂,涉及到多个环节,每个环节使用不同的软件来实现。我们配置发送邮件功能其实是用到了 MUA和MTA两个环节。
mailx 实现MUA
sendmail 实现MTA
服务器默认已经安装了sendmail。mail发送邮件,默认调用的是sendmail。如果没有mailx,请自行yum 安装一下。
yum install -y mailx sendmail
Failed to start sendmail.service: Unit not found.就是没有安装sendmail
2、mailx和sendmail的区别是什么
mailx是来发邮件的。相当于邮件客户端
sendmail是来实现邮件传输的
安装好之后。直接使用mailx 命令发送邮件测试肯定是不行了。需要进行对mailx.rc 进行配置
set from="877156312@QQ.com"
set smtp=smtps://smtp.qq.com:465 # 设置邮件服务器(注意端口)QQ邮箱这样写即可
set smtp-auth-user="877156312@qq.com" #设置邮件用户登录账号
set smtp-auth-password="fjjzslzrdxfdfamgbgbf" #授权码
set smtp-auth=login
set ssl-verify=ignore #认证方式
set nss-config-dir=/root/.certs #证书地址
配置好以上配置后。理论上就可以发送邮件了。再自由公网IP服务器上是没问题的。但是在腾讯服务器上是不行了。
原因是ssl问题。。
顺序执行如下命令即可生成证书:
mkdir -p /root/.certs/
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -L -d /root/.certs
为了防止出现前文所说的发送邮件警告提示,还需要进入邮箱 SSL 证书存放目录 /root/.certs 里执行如下命令
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt
3、mailx命令发送附件
更多参数请百度。
# mailx -s "test" -a 1.txt 'mytest@ywnz.com' < 2.txt #test为标题,1.txt附 件,2.txt正文,发送给mytest@ywnz.com
4、查看分析日志
sendmail 日志目录/var/log/maillog // 记录所有的发送日志
sendmail 定时发送
sendmail 设置每30秒处理一下邮件队列,首先邮件默认保存的目录下面是否有邮件,然后有ll命令显示邮件文件,然后在看一下邮件是否定时在发
5、查看默认定时间隔:
vim /etc/sysconfig/sendmail
6、查看发送邮件队列命令:
mailq 或 sendmail -bp
基于centos7.9二进制部署kubernetes1.25.4