邮件常常是Linux下监控报警手段之一。Linux下的mail命令可以方便,快速的完成发送邮件。
1. Linux发邮件2种常见客户端命令
1.1 mail命令(推荐)
语法:
- 无邮件正文
- mail -s "Title" 123456789@qq.com
- 有邮件正文
- mial -s "Title" 123456789@qq.com </etc/hosts
- echo "Contents"| mail -s "Title" 123456789@qq.com
- cat /etc/hosts |mail -s "Title" 123456789@qq.com
- 带附件的邮件
- mail -s "Title" 123456789@qq.com -a /etc/hosts2
参数:
- -s 主题,邮件标题
- -a attach file添加附件
- -c 给多个用户发送邮件
查看是否安装mail服务:
[root@nfs-31 scripts]# rpm -qa mailx mailx-12.4-10.el6_10.x86_64
如未安装:
yum install mailx -y
配置文件:/etc/mail.rc
示例:在/etc/mail.rc文件尾加上如下配置
因为163的设置相对简单些,以163邮箱为例,QQ邮箱等,其他邮箱因为安全等因素,需要设置的比较多,具体的可以搞下,本文不作重点。
set from=usr1@163.com set smtp=smtp.163.com set smtp-auth-user=usr1 set smtp-auth-password=邮箱密码 set smtp-auth=login
参数说明:
from 是发送的邮件地址
smtp 是发生的外部smtp服务器地址
smtp-auth-user 是外部smtp服务器认证的用户名
smtp-auth-password 密码
smtp-auth 认证方式
发送邮件测试:
echo "Content" | mail -s "Title" dongjunjie@cmcm.com
配置文件/var/spool/mail/[用户名]
查看所有的邮件信息
1.2 mutt命令
语法:
- 无邮件正文
- mutt -s "Title" 123456789@qq.com
- 有邮件正文
- mutt -s "Title" 123456789@qq.com </etc/hosts
- echo "Contents"| mutt -s "Title" 123456789@qq.com
- cat /etc/hosts |mutt -s "Title" 123456789@qq.com
- 带附件的邮件
- mutt -s "Title" 123456789@qq.com -a /etc/hosts2
例如:定期删除脚本
#!/bin/sh # 2019-12-09 # by zoe # 轮询删除java日志,只保留7天日志 MailContent = /dev/shm/mailContent LogFile = /dev/shm/cleanJavaLog.log LogDir = /home/java/java_*/log MailList = "system@okoo.net" echo "轮询删除java日志,只保留7天日志,详情请查看邮件!删除日志:`date +%Y%m%d`" >$MailContent if [ -n "$LogDir" ];then find $LogDir -type f -mtime +7 > $LogFile 2>&1 find $LogDir -type f -mtime +7 -delete > $LogFile 2>&1 mutt -s "Clean the java log 7 days ago" $MailList -a $LogFile<$MailContent else echo "删除日志失败,log目录不存在"|mutt -s "Clean the java log Wrong" $MailList fi
2. 邮件发送原理
Linux本地常见邮件服务有:
CentOS 5 默认使用sendmail邮件服务,开启方式为/etc/init.d/sedmail start
CentOS 6 默认使用postfix邮件服务,开启方式为/etc/init.d/postfix start
2.2 配置mail使用外部SMTP发邮件
通过修改配置文件可以使用外部SMTP服务器,可以达到不使用sendmail/postfix等内部邮件服务而用外部的smtp服务器发送邮件的目的:
- 修改/etc/mail.rc配置文件,配置信息放在最后
- set from=usr1@163.com smtp=smtp.163.com smtp-auth-user=usr1 smtp-auth-password=123456 smtp-auth=login