zoukankan      html  css  js  c++  java
  • linux通过使用mail发送电子邮件

    通过外部方法发送的电子邮件

    bin/mail默认为本地sendmail发送电子邮件,求本地的机器必须安装和启动Sendmail服务。配置很麻烦,并且会带来不必要的

    资源占用。而通过改动配置文件能够使用外部SMTPserver,能够达到不使用sendmail而用外部的smtpserver发送邮件的目的:

    改动/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是发生的外部smtpserver的地址

    smtp-auth-user是外部smtpserver认证的username

    smtp-auth-password是外部smtpserver认证的用户密码

    smtp-auth是邮件认证的方式

    配置成功后,就能够使用了

    能够发送一封邮件測试一下:

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

    以上内容转自: http://www.diybl.com/course/6_system/linux/Linuxjs/20091119/182839.html

    我试了一把,2006年之前注冊的163邮箱能够的,tom邮箱都是能够的

    postfix

    postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件,想成为sendmail替代产品,它试图成为更快、更easy管理、更安全的MTA,

      安装:

      rpm -ivh /mnt/cdrom/Server/postfix-2.3.3-2.i386.rpm postfix主程序

      rpm -ivh /mnt/cdrom/Server/postfix-pflogsumm-2.3.3-2.i386.rpm postfix日志工具

      rpm -ivh /mnt/cdrom/Server/dovecot-1.0-1.2.rc15.el5.i386.rpm POP程序

      首先查看是否安装过postfix服务,用rpm –qa |grep postfix ,

      实例讲解Postfix服务配置-网页教学网

      我这里是装过的,在这里先用rpm –e postfix删除postfix,然后再安装

      实例讲解Postfix服务配置-网页教学网

      相同,需查看是否有安装过POP,这个服务用的是dovecotserver,这里我也装过,删除后又一次安装就可以

      实例讲解Postfix服务配置-网页教学网

      实例讲解Postfix服务配置-网页教学网

      安装后是不是就能够直接执行了呢?

      实例讲解Postfix服务配置-网页教学网

    显然是不行的,它的一些必要的參数没有生效是不能执行的,以下改动几个经常使用的选项:

      Hostname 邮件主机的FQDN

      Mydomain 地机邮件主机所在的域

      Myorigin 本地邮件发送时的域名

      Mydestinatin 本地邮件接收是域名

      Inet_interface 邮件主机监听的port号

      Mynetworks 本地邮件server信赖的网络

      Relay_domain 本地邮件server传递的域

      Smtpd_banner 登录时显示的标题。最好是把详细的版本给隐藏起来(添加安全性)

      实例讲解Postfix服务配置-网页教学网

      实例讲解Postfix服务配置-网页教学网

      实例讲解Postfix服务配置-网页教学网

      实例讲解Postfix服务配置-网页教学网

      clip_image020

      实例讲解Postfix服务配置-网页教学网

      实例讲解Postfix服务配置-网页教学网

      实例讲解Postfix服务配置-网页教学网

    这样就完毕了一个最主要的smtp的server了,当然还要做非常多事情。如限制收、发邮人,别名,虚拟域等等,以下重新启动看看效果怎样

      实例讲解Postfix服务配置-网页教学网

      当然不要忘记了改动我们的POP服务设置,直接改动/etc/dovecot.conf ,把#protocols = imap imaps pop3 pop3s前面的#去掉就可以,重新启动看看:

      实例讲解Postfix服务配置-网页教学网

      实例讲解Postfix服务配置-网页教学网

      然后用我们最熟悉的Outlook登录。

      实例讲解Postfix服务配置-网页教学网

      奇怪了?不会是postfix设置错了吧?先看看日志:

      Tail –f /var/log/maillog

      实例讲解Postfix服务配置-网页教学网

      出现这个错就是dovecot的配置问题了?明明曾经直接改动dovecot支持的邮件接收方法即可了,这次为什么不行呢?试试telnet wudionline.com 25和telnet wudionline.com 110 看看

      实例讲解Postfix服务配置-网页教学网

      实例讲解Postfix服务配置-网页教学网

    也都没问题啊,想想前两天装的时候这样配置明明是能够在outlook登录的啊,但前两天是这样的情况:

      能够用outlook登录。但outlook接收不到邮件,能够发邮件。收邮件能够在/var/spool/mail里看到,就是接收不到本地 outlook来。经网上參考,最好把#mail_location = mbox:~/mail:INBOX=/var/mail/%u前的#去掉,就能够在本地收邮件了,经分析那里由于dovecot设置的邮件接收路径不 对,所以改一点就OK了,但这次是登录不上去啊。网上找了半天也没有答案,于是试试把 #mail_location = mbox:~/mail:INBOX=/var/mail/%u,前的#去掉,

      实例讲解Postfix服务配置-网页教学网

      重新启动看看

      实例讲解Postfix服务配置-网页教学网

      真的登录成功了。试了一下收、发邮件都没有问题了。

      平时因为root账号默认接收系统各种错误日志,可是用root登录个人认为不太方便,于是想用一个普通用户也接收发给root的邮件,看了一下配置帮助文档,按这种格式就能够用别名的方式接收其他用户的邮件:

      root: wuzh

      当然得写入/etc/aliases文件中。这样当系统出错错误或其他的事件日志的时候,就会把日志附加一份发给wuzh这个普通用户了这个就不截图了:),改了过后直接发一封邮件给root,然后在wuzh这个账号里就能够看到邮件原文了

      另一个功能:虚拟域利用一个虚拟域名来代表实际域来收发邮件(以我这种低水平来说,我感觉我用不上。它仅仅能用于内部交流,假设与外界收发邮 件的时候虚拟域就无法在广域网上实行解析。也就是根本就接收不到邮件,)如图:我把我的域名wudionline.com改成 wudionline.net发信给我的还有一个邮箱

      实例讲解Postfix服务配置-网页教学网

      发送人地址是变了,但是要回复那就难了…….看

      实例讲解Postfix服务配置-网页教学网

      他的优点就是隐藏自己的域名,好让别人找不到他(假设操心别人找他的话….),当然还有其他的优点的,我的水平菜还不知道怎么用.等学会了再来更新……

      这里还是演示一下怎样设置吧:

      在main.cf里增加virtual_maps = hash:/etc/postfix/virtual, 这个是虚拟域的位置,还要往这个文件中增加内容,格式为:

      Wudionline.net anything

      wuzh@wudionline.net wuzh

      之后,用postmap命令生成虚拟域数据库:

      postmap /etc/postfix/virtual

      前面是虚拟用户。后面是系统用户,事实上收邮件还是系统用户收发的,仅仅是同意虚拟用户对其操作而已

    postfix部分转自:http://www.webjx.com/server/linux-14673.html

    自己主动发送邮件的脚本

    记得在学校的时候,有一次和老师讨论问题,有一些不明确的地方,他说,你能够编个程序验证一下。我差点没有晕过去。由于那时的我非常害怕编程。只是还好。有非常多事情我们不须要编程就能够实现。

    比方近期。我開始厌烦在桌子上面的两条电脑之间转来转去,于是我打算写一小段shell脚本,当linux/unix以下的工作完毕的时候,系统自己主动发送一个邮件到windwos以下通知我。

    在Linux和Unix以下发送邮件很方便。假设仅仅是要发送一个消息。那么须要的命令就更简单了,仅仅只是不同的系统邮件server命令稍有不同。

    对于我,常常工作的电脑是HP的C8000工作站,它的系统是HP-UX,另一台也是HP,安装的是redhat AS系统。

    HP-UX的邮件程序须要在terminal以下输入:mail命令,然后进去写信,而redhat的邮件发送程序就比較方便,仅仅要一条命令就能够指定主题、附件、内容:

    echo "Content:The work is done" | mail -s "This is subject" mwang@veryword.com

    以下这一段脚本就是通过某一个文件是否已经生成进行推断,假设生成了就发送通知邮件到指定邮箱。

    否则就每30秒钟检查一次。有完毕的就发送通知邮件,有没有完毕的就休眠后继续循环,一直到所有完毕再退出。

    #!/bin/csh 
    set arrayA = ($*)
    set i=1
    set SysInfo = `uname`
    set arrayB = ()
    while ( $i <= $#arrayA )
    if ( -f ${arrayA[$i]}/result_data.txt) then
    if ($SysInfo == HP-UX ) then
    mail mwang@veryword.com << !
    Subject:'${arrayA[$i]} is finished'
    '${arrayA[$i]} is finished'
    .
    !
    else
    echo "${arrayA[$i]} is finished" | mail -s "${arrayA[$i]} is finished" mwang@veryword.com
    endif
    echo "${arrayA[$i]} is finished, a mail is sent to mwang"
    else
    set arrayB = ( $arrayB $arrayA[$i] )
    endif

    if ( ( $i >= $#arrayA ) && $#arrayB) then
    set arrayA = ($arrayB)
    echo "$arrayA is under calculation, please wait. Now: " `date`
    set arrayB = ()
    set i = 0
    sleep 30
    endif
    @ i++

    end


    转会 http://www.veryword.com/2008/11/10/auto-send-mail-script.html
  • 相关阅读:
    提高Java程序性能的技巧
    HBASE学习d端口master:16010(java操作hbase)https://www.cnblogs.com/junrong624/p/7323483.html
    log4j.properties加入内容
    zookeeper学习及安装
    flume学习以及ganglia(若是要监控hive日志,hive存放在/tmp/hadoop/hive.log里,只要运行过hive就会有)
    Hadoop各个启动流
    crontab基本操作部分
    pig(数据流语言和编译器)学习https://www.w3cschool.cn/apache_pig/apache_pig_execution.html
    pig配置
    hive(在大数据集合上的类SQL查询和表)学习
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4592889.html
Copyright © 2011-2022 走看看