1.安装 (需要sendmail或postfix服务)

sendmail:CentOS 5.x默认    # yum install sendmail     # systemctl start sendmail.service    # systemctl status sendmail.servicepostfix :CentOS 6.x默认    # yum install postfix    # 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安装邮件发送工具mailx    yum install mailx检查:    netstat -tunlp |grep 25

2.配置

# vim /etc/mail.rc     文件尾增加以下内容 :qq邮箱     set from=1825164562@qq.com smtp="smtp.qq.com:25"     set smtp-auth-user="1825164562@qq.com" smtp-auth-password="
"     set smtp-auth=login     或:163企业邮箱     echo -e "\n# mail\nset from=
 smtp=smtp.qiye.163.com\nset smtp-auth-user=
 smtp-auth-password=
 smtp-auth=login" >> /etc/mail.rc 说明:     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 "测试"  898009427@qq.com2) 有邮件正文    mail -s "主题"  收件地址< 文件(邮件正文.txt)        mail -s "邮件主题"  898009427@qq.com < /data/findyou.txt    echo "邮件正文" | mail -s 邮件主题  收件地址        echo "邮件正文内容" | mail -s "邮件主题"  898009427@qq.com    cat 邮件正文.txt | mail -s 邮件主题  收件地址         cat /data/findyou.txt | mail -s "邮件主题"  898009427@qq.com3)  带附件    mail -s "主题"  收件地址  -a 附件 < 文件(邮件正文.txt)         mail -s "邮件主题"  898009427@qq.com -a /data/findyou.txt< /data/findyou.txt        mail -s "邮件主题" -a 文件(附件) 898009427@qq.com < 文件(邮件正文.txt)     uuencode /data/findyou.txt | mail -s "邮件主题" 898009427@qq.com邮件正文的生成:     (1) 交互式输入;      点号(.)单独成行可以表示正文结束;Ctrl+d提交亦可;      发邮件            [root@NUC-1 ~]# mail -s 'hello hdfs' hdfs             How are you these days?             .       # 英文点号结尾表示结束;然后回车             EOT             [root@NUC-1 ~]#             收邮件             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  898009427@qq.com  abc.txt        Send Mail to 898009427@qq.com说明:建议直接使用命令 ,有脚本只是为了在打印显示相关信息,多此一举。

5.问题

启动postfix出错,查看centos中的postfix日志    # more  /var/log/maillog    postfix: fatal: parameter inet_interfaces: no local interface found for ::1        # vim  /etc/postfix/main.cf    发现配置为:    inet_interfaces = localhost    inet_protocols = all    改成:    inet_interfaces = all    inet_protocols = all重新启动    # systemctl restart postfix.service发送邮件:    # echo '这是邮件标题' | mail -s "这是邮件内容" 9379963xx@qq.com出现异常:    # 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