Linux发邮件之mail
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux发邮件之mail相关的知识,希望对你有一定的参考价值。
1.安装 (需要sendmail或postfix服务)
sendmail # yum install sendmail # systemctl start sendmail.service # systemctl status sendmail.service postfix # yum install mailx # systemctl start postfix.service # systemctl status postfix.service postfix.service - Postfix Mail Transport Agent Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled) Active: active (running) since 二 2017-09-19 14:08:03 CST; 1s ago Process: 72063 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS) Process: 72060 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS) Process: 72057 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS) Main PID: 72136 (master) CGroup: /system.slice/postfix.service ├─72136 /usr/libexec/postfix/master -w ├─72137 pickup -l -t unix -u └─72138 qmgr -l -t unix -u 9月 19 14:08:03 CentOS73 systemd[1]: Starting Postfix Mail Transport Agent... 9月 19 14:08:03 CentOS73 postfix/master[72136]: daemon started -- version 2.10.1, configuration /etc/postfix 9月 19 14:08:03 CentOS73 systemd[1]: Started Postfix Mail Transport Agent. 附件软件包:uuencode yum install sharutils 检查: netstat -tunlp |grep 25
2.配置
# vim /etc/mail.rc 文件尾增加以下内容 set [email protected] smtp="smtp.qq.com" set smtp-auth-user="[email protected]" smtp-auth-password="rootroot" set smtp-auth=login 说明: from: 对方收到邮件时显示的发件人 smtp: 指定第三方发送邮件的smtp服务器地址 smtp-auth: SMTP的认证方式。默认是LOGIN,也可改为CRAM-MD5或PLAIN方式 smtp-auth-user: 第三方发邮件的用户名 smtp-auth-password: 用户名对应密码 重启:(安装哪个重启哪个) systemctl restart sendmail.service systemctl restart postfix.service
3.Mail命令
smtp:simple mail transmission protocol :简单邮件传输协议,发邮件; pop3:Post Office Procotol:邮局协议 imap4:Internet Mail Access Procotol:互联网邮件访问协议 mail –s “邮件主题” –c”抄送地址” –b “密送地址” -- -f 发送人邮件地址 –F 发件人姓名 < 要发送的邮件内容 选项: -b<地址>:指定密件副本的收信人地址; -c<地址>:指定副本的收信人地址; -f<邮件文件>:读取指定邮件文件中的邮件; -i:不显示终端发出的信息; -I:使用互动模式; -n:程序使用时,不使用mail.rc文件中的设置; -N:阅读邮件时,不显示邮件的标题; -s<邮件主题>:指定邮件的主题; -u<用户帐号>:读取指定用户的邮件; -v:执行时,显示详细的信息。 1) 无邮件正文 mail -s "主题" 收件地址 mail -s "测试" [email protected] 2) 有邮件正文 mail -s "主题" 收件地址< 文件(邮件正文.txt) mail -s "邮件主题" [email protected] < /data/findyou.txt echo "邮件正文" | mail -s 邮件主题 收件地址 echo "邮件正文内容" | mail -s "邮件主题" [email protected] cat 邮件正文.txt | mail -s 邮件主题 收件地址 cat /data/findyou.txt | mail -s "邮件主题" [email protected] 3) 带附件 mail -s "主题" 收件地址 -a 附件 < 文件(邮件正文.txt) mail -s "邮件主题" [email protected] -a /data/findyou.txt< /data/findyou.txt uuencode /data/findyou.txt | mail -s "邮件主题" [email protected] 邮件正文的生成: (1) 交互式输入; 点号(.)单独成行可以表示正文结束;Ctrl+d提交亦可; 发邮件 [[email protected] ~]# mail -s ‘hello hdfs‘ hdfs How are you these days? . # 英文点号结尾表示结束;然后回车 EOT [[email protected] ~]# 收邮件 mail # # 输入数字查看对应第几封邮件 q # q退出 (2) 通过输入重定向; mail -s ‘hello hdfs‘ hdfs < file.txt(正文内容) (3) 通过管道; cat file.txt | mail -s ‘hello hdfs‘ hdfs
4.脚本
# vim sendmail.sh #!/bin/bash #author:findyou help(){ echo "eg: $0 [Subject] [address] [content_file] [file]" echo "" exit 1 } if [ ! -n "$1" ] ; then help fi cDate=`date +%Y%m%d` if [ ! -n "$2" ] ; then help else mail_to=$2 echo " Send Mail to ${mail_to}" fi if [ ! -n "$4" ] ; then mail -s $1 ${mail_to}<$3 else mail -s $1 -a $4 ${mail_to}<$3 fi 使用 # ./sendmail.sh test [email protected] abc.txt Send Mail to [email protected] 说明:建议直接使用命令 ,有脚本只是为了在打印显示相关信息,多此一举。
5.问题
发送邮件: # echo ‘这是邮件标题‘ | mail -s "这是邮件内容" [email protected] 出现异常: # send-mail: fatal: parameter inet_interfaces: no local interface found for ::1 查看centos中的postfix日志 # more /var/log/maillog postfix: fatal: parameter inet_interfaces: no local interface found for ::1 # vi /etc/postfix/main.cf inet_interfaces = localhost inet_protocols = all 改成: inet_interfaces = all inet_protocols = all 重启:(安装哪个重启哪个) # systemctl restart sendmail.service # systemctl restart postfix.service
本文出自 “毛虫小臭臭” 博客,请务必保留此出处http://moerjinrong.blog.51cto.com/11124564/1966812
以上是关于Linux发邮件之mail的主要内容,如果未能解决你的问题,请参考以下文章