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
时间: 2024-11-03 03:31:35

Linux发邮件之mail的相关文章

Linux发邮件之mail命令

1.配置 vim /etc/mail.rc 文件尾增加以下内容 set from=[email protected] smtp="smtp.qq.com"set smtp-auth-user="[email protected]" smtp-auth-password="123456"set smtp-auth=login 说明: from: 对方收到邮件时显示的发件人smtp: 指定第三方发送邮件的smtp服务器地址smtp-auth: SMT

使用mail.rc快速配置linux发邮件服务

1.系统环境. [[email protected] ~]# cat /etc/redhat-release  CentOS release 6.8 (Final) [[email protected] ~]# uname -r 2.6.32-642.el6.x86_64 [[email protected] ~]# uname -m x86_64 2.通过修改配置文件/etc/mail.rc可以使用外部SMTP服务器,轻松实现linux发邮件功能. [[email protected] ~]#

Linux发邮件

一.mail命令 1.配置 vim /etc/mail.rc 文件尾增加以下内容  set [email protected] smtp="smtp.qq.com"set smtp-auth-user="[email protected]" smtp-auth-password="123456"set smtp-auth=login 说明: from: 对方收到邮件时显示的发件人smtp: 指定第三方发送邮件的smtp服务器地址smtp-auth

使用C#轻松发邮件:HY.Mail一款简单、易用、灵活的邮件工具库

一.开发HY.Mail的初衷 Nuget或者github上有很多成熟且优秀的邮件库可以使用, 但是目前找到的使用都不够简洁或者不适合我的使用场景 我的场景是开发应用场景(例如系统通知.运维通知),而非业务场景(给客户发送邮件,HY.Mail也适用于此场景). 需要能够灵活简洁的调用,需要预设一些邮件信息. 例如系统运维:需要做系统日志的邮件通知,一般收件人.接收人.抄送人都是预选设置好的.那么我们就需要预先设置N种MailSender,然后根据需求直接调用对应的MailSender发送邮件正文即

利用Laravel自带的Mail类发邮件

由于项目在运行过程中经常用到邮件检测报警的功能,而在之前我都是用shell脚本发送邮件.shell脚本的优点是可以直接处理服务器指令,但是其缺点就是处理数据的能力效率太低,取数据库的许多数据要先把数据写入文件里,然后每行读文件并且分割来取出你想要的数据,相对来说麻烦太多.所以本人就准备直接利用Laravel框架封装好的Mail类直接发邮件,而且php语言相对shell来说数据处理能力简直强太多,所以果断弃坑了. 首先新建一个Laravel项目,在其.env文件里找到MAIL相关值,配好邮件发送账

谢烟客---------Linux之邮件服务及任务计划执行

任务计划命令 mail,at,batch,crond,sleep 邮件服务工作模式: 发 代理-> stmp --> smtp --> 投递代理 --> 邮筒 --> pop3,imap4 <-- 代理 <-- 收 at,mail,batch,cron命令均建议用完整路径或在脚本中定义PATH 特点: mail -s '主题' [email protected] 发邮件 batch 根据负载选定命令执行时间 at HH:MM am|pm [YYYY-MM-DD]

linux_发邮件

如何通过linux发邮件? 邮箱配置文件: /etc/mail.rc 1. 邮箱文件配置 vim /etc/mail.rc # 添加一下数据 set [email protected] smtp=smtp.163.com smtp-auth-user=beimen_5321 smtp-auth-password=beimen123 smtp-auth=login # from 发送邮件的地址 # smtp 发生的外部smtp服务器地址 # smtp-auth-user 外部smtp服务器认证的用

添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理

添加自定义监控项目 例如需求:监控某台web的80端口连接数,并出图两步:1)zabbix监控中心创建监控项目:2)针对该监控项目以图形展现 对于第一步,需要到客户端定义脚本[[email protected] ~]# vim /usr/local/sbin/estab.sh#!/bin/bash##获取80端口并发连接数netstat -ant |grep ':80 ' |grep -c ESTABLISHED然后给他定义权限chmod 755 /usr/local/sbin/estab.sh

linux用mail命令发邮件

最近公司手游的一个测试区服务端老挂,于是乎整了个脚本监测着,挂了就给发邮件过来然后自动重启那个服务.. 于是乎开工 先mail一个看看,结果提示command not found(公司系统都是定制安装)哎,装mail吧 忘了mail的软件包名字找找咱用yum search mail找找 找到了接下来安装:yum install mailx -y 安装成功! 接下来编辑/etc/mail.rc直接文件末行加上以下配置: set [email protected](发送的邮件地址) set smtp