CentOS下发送邮件
重新把吃灰的树莓派3B+拿出来折腾玩,想用作移动的server,公司的有线网是dhcp的,在公司也无法时时刻刻有显示器。
于是打算让树莓派开机获取IP后自动发送邮件告知IP。
环境:系统为CentOS8,软件为mailx 和 sendmail
1、首先是注册163邮箱,然后开通服务.

此时会有一个授权码,这个是第三方客户端使用163邮箱时的密码。

要记住这个授权码。
2、安装 mailx和sendmail
yum -y install sendmail mailx
3、邮件使用ssl,要配置证书
mkdir -p /root/.certs/ echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/163.crt certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt certutil -L -d /root/.certs cd /root/.certs/ certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i 163.crt
4、配置mailx配置文件,加入配置
vi /eta/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=xxx #设置授权码 set smtp-auth=login set nss-config-dir=/root/.certs/ set ssl-verify=ignore
返回如下提示即可:
Notice: Trust flag u is set automatically if the private key is present.
5、启动mailx服务,测试功能
systemctl start sendmail echo 内容 | mailx -s '标题' 接收人邮箱
mailx -v 选项可以查看执行过程,对排错很有用。
6、编写脚本,开机自动发送
这里由于只需要告知ip所以只写了一个简单的shell脚本
echoIP.sh
(后期测试发现启动后dhcp还未获取到ip或者eth0为完全启动就执行了命令,导致获取到的IP为172.0.0.2。所以延迟10S执行)
sleep 10
hostname -i|awk -F ' ' '{print $2}'|mailx -v -s 'Respberry IP address:' xxx@qq.com
到此,配置完成。
各种折腾发现不起作用,查找资料发现稳妥一些的办法是创建systemd服务然后设置开机自启。
vi /usr/lib/systemd/system/echoIP.service
[Unit] Description=echo ip address when power on. After=network.target [Service] Type=forking WorkingDirectory=/opt/scripts/ ExecStart=/bin/bash /opt/scripts/echoIP.sh ExecStop=/bin/bash /opt/scripts/echoIP.sh User=root [Install] WantedBy=multi-user.target
然后执行
systemctl enable echoIP.service
参考文献:
作者 daysomeon:Centos7配置163邮件服务并发送邮件

浙公网安备 33010602011771号