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
  • 相关阅读:
    MySql 用户 及权限操作
    MAC 重置MySQL root 密码
    在mac系统安装Apache Tomcat的详细步骤[转]
    Maven:mirror和repository 区别
    ES6 入门系列
    转场动画CALayer (Transition)
    OC 异常处理
    Foundation 框架
    Enum枚举
    Invalid App Store Icon. The App Store Icon in the asset catalog in 'xxx.app' can’t be transparent nor contain an alpha channel.
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4592889.html
Copyright © 2011-2022 走看看