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
在/etc/rc.local 加入
sh echoIP.sh

到此,配置完成。

 各种折腾发现不起作用,查找资料发现稳妥一些的办法是创建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

 

 

参考文献: 

作者 daysomeonCentos7配置163邮件服务并发送邮件

 

posted @ 2020-07-31 12:49  iSugarless  阅读(339)  评论(0)    收藏  举报