设为首页 收藏本站
查看: 1396|回复: 0

[经验分享] mailx及sendEmail的邮件发送功能介绍

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-11 10:17:40 | 显示全部楼层 |阅读模式
最近公司某个需要使用邮件提醒。于是就选了mailx和sendEmail比较,看看那个好用!
mailx
mailx安装我就不介绍了,很简单!我先介绍下系统的版本和mailx的版本
1
2
3
4
5
[iyunv@localhost ~]# mailx -V
12.4 7/29/08
[iyunv@localhost ~]# cat /etc/issue
CentOS release 6.8 (Final)
Kernel \r on an \m



mailx的配置文件在/etc/mail.rc(我是rpm安装的)

在配置文件中添加下面的代码(passwd写开通smtp客户端给的授权码)

1
2
3
4
5
set from=usernam@163.com
set smtp=smtp.163.com
set smtp-auth-user=username@163.com
set smtp-auth-password=passwd
set smtp-auth=login



测试下是否可以使用
1
cat /opt/tesh |mailx -v -s 'hello' '*****@163.com'



测试发现有时能发送,有时会退信并报以下错误:
1
2
3
4
554 DT:SPM 163 smtp3,DdGowACX1p2fRn9X_lIIAA--.2018S2 1467958944,please see http://mail.163.com/help/help_spam_16.htm?ip=*.*.*.*&hostid=smtp3&time=1467958944
smtp-server: 554 DT:SPM 163 smtp3,DdGowACX1p2fRn9X_lIIAA--.2018S2 1467958944,please see http://mail.163.com/help/help_spam_16.htm?ip=*.*.*.*&hostid=smtp3&time=1467958944
"/root/dead.letter" 0/0
. . . message not sent.



554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件
查了下原因,因为163反垃圾邮件设置的原因,所有我采用了qq邮箱及hostmail
qq邮箱
1
2
3
4
5
set from=224******53@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=224******53@qq.com
set smtp-auth-password=euia********chb   #授权码
set smtp-auth=login



错误提示:
530 Error: A secure connection is requiered(such as ssl). More information at http://service.mail.qq.com/cgi-bin/help?id=28
smtp-server: 530 Error: A secure connection is requiered(such as ssl). More information at http://service.mail.qq.com/cgi-bin/help?id=28
"/root/dead.letter" 19/438
. . . message not sent
于是我改了下配置文件添加了几个参数
1
2
3
4
5
6
7
8
set from=224******53@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=224******53@qq.com
set smtp-auth-password=euia********chb
set smtp-auth=login
set smtp-use-starttls
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/



邮件发送成功,在/etc/pki/nssdb/有证书文件
当然还有两个方式可以获取证书文件
1
2
3
4
5
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



然后mail.rc的配置文件改成
1
2
3
4
5
6
7
8
set from=224******53@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=224******53@qq.com
set smtp-auth-password=euia********chb
set smtp-auth=login
set smtp-use-starttls
set ssl-verify=ignore
set nss-config-dir=/root/.certs



有些邮箱无法通过上述方式获取证书,我们可以在装有火狐浏览器的服务器中把证书拷贝过来
1
2
3
4
5
[iyunv@localhost test]# cd /home/test/.mozilla/firefox/twmiqm5n.default/
[iyunv@localhost twmiqm5n.default]# ll *db
-rw-------. 1 test test 65536 Jul  7 16:29 cert8.db
-rw-------. 1 test test 16384 Jul  7 16:29 key3.db
-rw-------. 1 test test 16384 May 28 20:38 secmod.db



把这个三个文件拷贝到指定文件下。比如:/root/.certs1

1
2
3
4
5
6
7
8
set from=224******53@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=224******53@qq.com
set smtp-auth-password=euia********chb
set smtp-auth=login
set smtp-use-starttls
set ssl-verify=ignore
set nss-config-dir=/root/.certs1



mailx的操作还是蛮简单的,就是一直报一个错误
Error in certificate: Peer's certificate issuer is not recognized.
证书没有获得认可
解决方法:找个存放证书的目录
1
2
3
4
5
6
7
8
9
10
[iyunv@localhost .certs]# pwd
/root/.certs
[iyunv@localhost .certs]# ll
total 80
-rw-------. 1 root root 65536 Jul  8 15:13 cert8.db
-rw-r--r--. 1 root root  2293 Jul  7 16:25 qq.crt
-rw-------. 1 root root 16384 Jul  8 15:13 key3.db
-rw-------. 1 root root 16384 Jul  7 16:24 secmod.db
[iyunv@localhost .certs]# certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu"  -d ./ -i qq.crt
Notice: Trust flag u is set automatically if the private key is present.



这样就不会报错了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Resolving host smtp.qq.com . . . done.
Connecting to *.*.*.* . . . connected.
220 smtp.qq.com Esmtp QQ Mail Server
>>> EHLO localhost
250-smtp.qq.com
250-PIPELINING
250-SIZE 73400320
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN
250-MAILCOMPRESS
250 8BITMIME
>>> STARTTLS
220 Ready to start TLS
Comparing DNS name: "mx2.qq.com"
................................
Comparing DNS name: "smtp.qq.com"
SSL parameters: cipher=AES-256, keysize=256, secretkeysize=256,
issuer=CN=GeoTrust SSL CA - G3,O=GeoTrust Inc.,C=US
subject=CN=pop.qq.com,OU=R&D,O=Shenzhen Tencent Computer Systems Company Limited,L=Shenzhen,ST=Guangdong,C=CN
>>> EHLO localhost
250-smtp.qq.com
250-PIPELINING
250-SIZE 73400320
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN
250-MAILCOMPRESS
250 8BITMIME
>>> AUTH LOGIN
334 VXNlcm5hbWU6
>>> MjI0Njk0NTU1M0BxcS5jb20=
334 UGFzc3dvcmQ6
>>> ZXVpYXl1a3JrZ3JoZWNoYg==
235 Authentication successful
>>> MAIL FROM:<22******53@qq.com>
250 Ok
>>> RCPT TO:<username@163.com>
250 Ok
>>> DATA
354 End data with <CR><LF>.<CR><LF>
>>> .
250 Ok: queued as
>>> QUIT
221 Bye



sendEmail
下面来介绍sendEmail的使用
1
2
3
4
5
wget http://caspian.dotconf.net/menu/ ... dEmail-v1.56.tar.gz
tar -zxvf sendEmail-v1.56.tar.gz
cd sendEmail-v1.56
mv sendEmail /usr/local/bin/
yum -y install perl-IO-Socket-SSL openssl-perl openssl-devel



sendEmail就可以使用了。应为sendEmail没有配置文件,所以在发送邮件的时候需要填上发件人的账户密码,没有mailx方便.
这是我们需要脚本辅助
1
2
3
4
5
6
7
8
#!/bash/sh
from_email='username@hotmail.com'
smtp='smtp-mail.outlook.com:587'
title='标题'
to_email=`username@qq.com`
passwd='passwd'
body=`cat test`
/usr/sbin/sendEmail -o tls=yes -f "$from_email"  -s "$smtp"  -u "$title"  -o message-content-type=text  -o message-charset=utf8 -t "$to_email" -xu "$from_email"  -xp "$passwd"  -m "$body"



以上是个简单的脚本,当然标题和内容以及发件人你都可以传参进来。这样的话就不会再命令行中暴露密码。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-242484-1-1.html 上篇帖子: rsync配置及使用 下篇帖子: linux安装及简单优化
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表