我的日常

登录/注册
您现在的位置:论坛 资料库 开源社区 > linux下安装sendmail 邮件发送
总共48086条微博

动态微博

查看: 2587|回复: 0

linux下安装sendmail 邮件发送

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2016-02-29 17:26:56 |只看该作者 |倒序浏览
    最近搭建日志分析elk系统、基本已经搭建完毕、然后使用logstash 做一个错误邮件发送的功能及时通知项目管理员。
    一、准备 安装 sendmail
    1、 安装 yum install -y sendmail
    2、配置 文件 vi /etc/mail.rc
    set from=admin@52itstyle.com smtp=smtp.52itstyle.com smtp-auth-user=admin@52itstyle.com smtp-auth-password=123456 set smtp-auth=login
    3、启动服务  service sendmail start
    4、检测服务  chkconfig --list |grep sendmail
    5、测试  mail -s "test" 345849402@qq.com <content.txt


    linux mail 命令参数:
    使用mail发邮件时,必须先将sendmail服务启动。
    mail –s “邮件主题” –c”抄送地址” –b “密送地址” -- -f 发送人邮件地址 –F 发件人姓名 < 要发送的邮件内容

    三种常用格式发信


      mail -s test yangfang@fudan.edu.cn #第一种方法,你可以把当前shell当成编辑器来用,编辑完内容后Ctrl-D结束
      echo “mail content”|mail -s test yangfang@fudan.edu.cn #第二种方法,我用的最多,可能是喜欢管道的缘故吧
      mail -s test yangfang@fudan.edu.cn < file #第三种方法,以file的内容为邮件内容发信

    指定特定的发送人:
    $ mail -s "just a test" 收信人邮箱地址 < 要发送的邮件内容文件 -- -f 发送人邮件地址 -F 发件人姓名
    效果是: 信件内容将发送给 收信人邮箱,显示的发送人为 发送人姓名<发送人邮件地址>,显示的内容为 发送的邮件内容...
    包含命令执行结果的MAIL发送:
    echo -e `ls /tmp`|mail -s "test" fff@aaa.com < /tmp/dd.txt -- -f cc@aaa.com -F cc

    i 忽略 tty 的中断讯号。(interrupt)
    I 强迫设成互动模式。(Interactive)
    v 列印出讯息,例如送信的地点、状态等等。(verbose)
    n 不读入 mail.rc 设定档。
    s 邮件标题。
    c cc 抄送邮件地址。
    b bcc密送邮件地址。

    需要sendmail或postfix服务

    如果单纯的发文件文件可以用
    cat xxxx.txt |mail -s "主旨" abc@xxx.com fff@xxx.com

    如果需要发送附件需要安装uuencode来编码 (yum install sharutils)

    单独发附件,这样xxxx@xxx.com会收到一个data.txt的附件
    uuencode /tmp/data_process.log  data.txt |mail xxx@xxx.com

    如果需要正文和附件一起发:
    uuencode /tmp/data_process.log  data.txt > /tmp/data_temp.txt


    系统收到邮件都会保存在“/var/spool/mail/[linux用户名]”文件中。在linux中输入mail ,就进行了收件箱,并显示二十封邮件列表。

    此时命令提示符为”&”:(可以输入以下命令对邮件进行相关操作)
    unread 标记为未读邮件

    h|headers 显示当前的邮件列表

    l|list 显示当前支持的命令列表

    ?|help 显示多个查看邮件列表的命令参数用法

    d 删除当前邮件,指针并下移。 d 1-100 删除第1到100封邮件

    f|from 只显示当前邮件的简易信息。 f num 显示某一个邮件的简易信息

    f|from num 指针移动到某一封邮件

    z 显示刚进行收件箱时的后面二十封邮件列表

    more|p|page 阅读当前指针所在的邮件内容 阅读时,按空格键就是翻页,按回车键就是下移一行

    t|type|more|p|page num 阅读某一封邮件

    n|next|{什么都不填} 阅读当前指针所在的下一封邮件内容阅读时,按空格键就是翻页,按回车键就是下移一行

    v|visual 当前邮件进入纯文本编辑模式

    n|next|{什么都不填} num 阅读某一封邮件

    top 显示当前指针所在的邮件的邮件头

    file|folder 显示系统邮件所在的文件,以及邮件总数等信息

    x 退出mail命令平台,并不保存之前的操作,比如删除邮件

    q 退出mail命令平台,保存之前的操作,比如删除已用d删除的邮件,已阅读邮件会转存到当前用户家目录下的mbox文件中。如果在mbox中删除文件才会 彻底删除。在linux文本命令平台输入 mail -f mbox,就可以看到当前目录下的mbox中的邮件了。

    cd 改变当前所在文件夹的位置

    写信时,连按两次Ctrl+C键则中断工作,不送此信件。

    读信时,按一次Ctrl+C,退出阅读状态。

    使用linux mail命令发送邮件:

    1. 将文件当做电子邮件的内容送出
    语法:mail -s “主题”用户名@地址< 文件
    例如:
    mail -s “program” user < file.c 将file.c

    当做mail的内容,送至user,主题为program。

    2. 传送电子邮件给本系统用户
    语法:mail 用户名

    3. 传送电子邮件至外地用户
    语法: mail 用户名@接受地址
    …/usr/lib/sendmail -bp
    ……“Mail queue is empty” ……mail ….

    例如:
    mailtest@hotmail.com
    Subject : mail test
    :
    键入信文内容
    : :
    按下Ctrl+D 键或. 键结束正文。
    连按两次Ctrl+C键则中断工作,不送此信件。
    Cc( Carbon copy) : 复制一份正文,给其他的收信人。

    4、将信件送给一个或以上的电子邮件地址。

    由于没有加入其他的选项,使用者必须输入标题与信件的内容等。而 user2 没有主机位置,就会送给邮件服务器的 user2 使用者。
    mail user1@email.address
    mail user1@email.address user2
    将 mail.txt 的内容寄给 user2 同时 cc 给 user1 。如果将这一行指令设成 cronjob 就可以定时将备忘录寄给系统使用者。
    mail -s 标题 -c user1 user2 < mail.txt

    5. 检查所传送的电子邮件是否送出,或滞留在邮件服务器中
    语法:/usr/lib/sendmail -bp
    若屏幕显示为“Mail queue is empty” 的信息,表示mail 已送出。
    若为其他错误信息,表示电子邮件因故尚未送出。

    linux mail利用外部邮箱地址发邮件

    bin/mail会默认使用本地sendmail发送邮件,这样要求本地的机器必须安装和启动Sendmail服务,配置非常麻烦,而且会带来不必要的

    资源占用。而通过修改配置文件可以使用外部SMTP服务器,可以达到不使用sendmail而用外部的smtp服务器发送邮件的目的:

    修改/etc/nail.rc (/etc/mail.rc)

    set from=fromUser@domain.com smtp=smtp.domain.comset smtp-auth-user=username smtp-auth-password=passwordset smtp-auth=login
    说明:

    from是发送的邮件地址

    smtp是发生的外部smtp服务器的地址

    smtp-auth-user是外部smtp服务器认证的用户名

    smtp-auth-password是外部smtp服务器认证的用户密码

    smtp-auth是邮件认证的方式

    配置成功后,就可以使用了

    可以发送一封邮件测试一下:

    mail -s "test" user@sohu.com <content.txt 其中-s后面的是邮件标题,user@sohu.com是收件人地址,content.txt里面是邮件正文


    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表