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

[经验分享] linux perl 脚本 邮件

[复制链接]

尚未签到

发表于 2018-8-31 10:17:54 | 显示全部楼层 |阅读模式
  使用Perl发送邮件
在之前的监控系统中,邮件系统配置为只能本地调用mail命令发送,这样如果要在每台数据库服务上发送邮件就比较麻烦,需要通过ssh远程调用邮件服务器上的发送脚本。如果要发送文件,还要先将文件复制到邮件服务器上。随着机器数量的增加,这种方式越来越不灵活。因此希望能通过传统的smtp的方式在任何主机上都能发送邮件,于是花了点时间研究了一下sendmail,根据这篇文章很轻松的让sendmail跑了起来:修改sendmail配置模板/etc/mail/sendmail.mcdefine(QUEUE_DIR, `/var/spool/mqueue/q*')dnlTRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnldefine(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnldnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnlDAEMON_OPTIONS(`Port=25, Name=MTA')dnl第一行是新增,支持多个队列第二三行去掉注释第四行加上注释第五行新增根据模板生成配置文件m4 /etc/mail/sendmail.mc > /etc/sendmail.cf建立多个队列的目录cd /var/spool/mqueue/mkdir q1 q2 q3 q4 q5 q6启动sendmail/etc/rc.d/init.d/sendmail start若要随机自启动sendmail,修改一下chkconfig设置即可chkconfig --level 35 sendmail on测试了一下发送邮件成功:mail -s &quot;test mail&quot; NinGoo@test.com < /tmp/test.log在CPAN上搜索了一下,Mail:Sender模块发送邮件比较方便,支持多附件,语法也比较简单。需要安装如下两个组件:MIME::Base64Mail::Sender发送邮件的perl示例代码如下,为便于查看邮件发送的详细情况,这里开启了debug模式:#!/usr/bin/perl -wuse Mail::Sender;open my $DEBUG, &quot;>> /tmp/mail.log&quot; or die &quot;Can't open the debug file: $!\n&quot;;$sender = new Mail::Sender {smtp => 'smtp_server',   from => 'send@mail.com'};#发送普通邮件$sender->MailMsg( {to => 'NinGoo@test.com', subject => 'test mail', msg => 'hello word', debug => $DEBUG });#发送带附件的邮件$sender->MailFile( {to => 'NinGoo@test.com', subject => 'test mail with attached file', msg => 'hello word', file => '/tmp/test.txt' debug => $DEBUG });经过测试,在邮件服务器本机发送成功,但在远程主机上则失败了,通过debug的log文件,发现错误如下:>> 550 5.7.1 < NinGoo@test.com>...>因为是内部监控使用,可以配置远程发送到特定的域的邮件无须认证,修改/etc/mail/relay-domains文件,每行加入一个目标域,如taobao.com。修改配置后注意重启sendmail/etc/rc.d/init.d/sendmail restart发送正常的log如下:>> 250 2.0.0 n69DbJwt011946 Message accepted for delivery

运维网声明 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-559255-1-1.html 上篇帖子: perl操作memcache-Linux的生活 下篇帖子: Perl Learning - 2 (If(), While(), Chomp(), )
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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