x使用mail命令发邮件,Linux下邮件发送

文章总结了四种在linux中实现邮件发送的方法,有需要学习的朋友可参考一下本文章。

Linux最简单发送邮件的方法2010-08-27 14:16一般使用本机的mail命令, 这就需要开启本机的smtp服务. 假如网络里面有一个邮件服务器(一般公司都有的), 则可以直接使用这台现有的邮件服务器, 不用开启本机的smtp服务, 只需要使用第三方软件sendEmail. 其官方地址:

Centos6.x使用mail命令发邮件

一.前言:

Linux下邮件发送又一方法——sendEmail使用方法:

首先要在邮件服务器上新建一个账户用来做发邮件的账户, 可以利用一现有的, 假如为dba@linuxidc.com, SMTP邮件服务器地址为mail.linuxidc.com, SMTP验证的用户名密码(如果该邮件服务不需要SMTP验证则无需本用户名密码)为god/iamgod

使用mail命令发送邮件

因为需要经常备份网站的数据,所以了解并学习了下linux下如何通过shell来发送邮件,这里以CentOS为例,使用mail命令来进行外部邮件的发送。mail命令的语法如下:

1

2

3

4

Usage:mail[-iInv][-ssubject][-ccc-addr][-bbcc-addr]to-addr...

[--sendmail-options...]

mail[-iInNv]-f[name]

mail[-iInNv][-uuser]

使用mail命令发送邮件,有如下三种方式:

1、直接使用shell当编辑器

1

2

3

mail-s"Hello from mzone.cc by shell"[email protected]

hello,thisisthecontentofmail.

welcometowww.mzone.cc

第一行是输入的命令,-s表示邮件的主题,后面的[email protected]则是邮件的接收人,输入完这行命令后回车,会进入邮件正文的编写,我们可以输入任何文字,比如上面的两行。当邮件正文输入完成后,需要按CTRL D结束输入,此时会提示你输入Cc地址,即邮件抄送地址,没有直接回车就完成了邮件的发送。

2、使用管道进行邮件发送

1

echo"hello,this is the content of mail.welcome to www.mzone.cc"|mail-s"Hello from mzone.cc by pipe"[email protected]

使用管道直接敲入这行命令即可完成邮件的发送,其中echo后的是邮件正文。

3、使用文件进行邮件发送

1

mail-s"Hello from mzone.cc by file"[email protected]<mail.txt

使用上面的命令后,我们就可以把mail.txt文件的内容作为邮件的内容发送给[email protected]了。

使用上述三种方式都可以给外部邮箱进行邮件发送,但因为前面2中都是直接在shell中敲入邮件内容,因此无法输入中文,即使我们使用粘贴的方式输入了中文,那么收到的邮件也是乱码的。但第3种方式,我们可以在window下编辑好邮件内容后,放到linux下,再进行发送,这样就可以正常发送中文了。不过目前邮件的中文标题暂时没有找到解决办法。

因为mail程序本身就是调用sendmail来进行邮件发送的,因此我们可以在mail命令中使用sendmail的参数进行配置,比如我想使用特定的发件人发送邮件,可以使用如下命令:

1

mail-s"Hello from mzone.cc with sender"[email protected]@mzone.cc<mail.txt

上面的命令中,我们使用了– -f [email protected]这样的参数,这是sendmail的选项,其中-f表示邮件的发送人邮件地址。更多sendmail参数请查看这里 sendmail进行帮助获取。

很多情况下,我们也需要使用邮件来发送附件,在linux下使用mail命令发送附件也很简单,不过首先需要安装uuencode软件包,这个程序是对二进制文件进行编码使其适合通过邮件进行发送,在CentOS上安装该软件包如下:

1

yuminstallsharutils

安装完成后我们就可以来进行附件的发送了,使用如下命令:

1

uuencodetest.txttest|mail-s"hello,see the attachement"[email protected]<mail.txt

完成后就可以把text.txt文件作为邮件的附件发送出去了。uuencode有两个参数,第一个是要发送的文件,第二个是显示的文件名称。

这里我主要介绍的是在CentOS下使用mail发送电子邮件的一些使用方法,需要的要求是你的linux必须安装了sendmail并开启了,同时保证可以连接外网。另外,文章中提到的命令本人都经过亲自测试,保证完全可用,不过你需要将命令中的电子邮件地址换成自己的电子邮件地址。

有了这个mail命令,我们在linux下操作又多了一把利器了,perfect ^_^

原地址是:

伪造发件人方法:
Centos 6.x Heirloom Mail version 12.4 7/29/08. Type ? for help.

Mail 已经自带参数可以指定,如下:

1

# echo hello | mail -s ’12306′ -r [email protected] [email protected]

Centos 5.x Mail version 8.1 6/6/93. Type ? for help.
在使用Linux的mail来发邮件的时候,是可以对发件人进行伪造的。也就是说我们可以任意的指定发件人。
使用方法如下:

1

# echo hello | mail -s ’12306′ [email protected] -- -f [email protected]

这里要注意先是有两个短杠 再加一个-f后面才跟上发件人地址。

这种发信方式,不仅在使用本地senmail服务器验证通过,并且在我们上篇的sohu邮件服务器验证通过。
所以,电子邮件是可以伪造的,大家注意安全啊。。

后记:
这种制度看起来好像是不安全。其实这和现实生活中的例子是一样的。
在日常生活中我们发信或者发快递,发件人的一栏,我们是可以不填的,也可以随便填,邮递员也不会跟你去审核。
当我们收到一个信件时,我们其实是不知道到底是谁发的,当我们看到发件人上有熟悉的名字,我们才会猜测是谁发给自己的。
不法的人员可以通过邮件发送炸弹、病毒等,这些事已经有先例了。
在计算机网络中,路由器对IP数据包的处理也是不会去检查源地址(发件人),这样不法人员可以利用伪造源IP造成DDOS攻击或者DrDDOS攻击。

使用mail命令发送邮件 因为需要经常备份网站的数据,所以了解并学习了下linux下如何通过shell来发送邮件,这里...

今天来分享一个可以在linux命令行(shell)模式下使用的发送电子邮件的软件sendEmail

下载sendEmail

  1. 安装sendMail

首先上下载地址:

wget

# cd /u01/software/nagios
# wget
# tar -zxvf sendEmail-v1.56.tar.gz && cd sendEmail-v1.56
# cp sendEmail /usr/local/bin
# chmod 0755 /usr/local/bin/sendEmail

安装方式简单,不需要编译,只需把可执行文件添加到环境变量$PATH目录直接使用即可,由于该软件使用Perl开发,所以需要安装Perl,使用该工具可便于对各种系统环境下定时运行的监控类脚本作出定时的反馈,并发送消息到管理员邮箱上。下面直接搬运Readme文件里的安装与使用方法,以及翻译和注释。

 代码如下

  1. 确保可访问域名

----------------------------------------------------------分隔线--------------------------------------------------------------

复制代码

# vi /etc/resolv.conf            (使用Google的公共DNS服务, 其它也行)
nameserver 8.8.8.8
nameserver 8.8.4.4
# ping -c 3 mail.linuxidc.com    (确认可访问smtp服务器域名)
PING mail.linuxidc.com (222.232.145.18) 56(84) bytes of data.
64 bytes from mail.linuxidc.com (222.232.145.18): icmp_seq=0 ttl=63 time=10.0 ms
64 bytes from mail.linuxidc.com (222.232.145.18): icmp_seq=1 ttl=63 time=0.749 ms
64 bytes from mail.linuxidc.com (222.232.145.18): icmp_seq=2 ttl=63 time=8.35 ms
--- mail.linuxidc.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.749/6.388/10.064/4.049 ms, pipe 2

二.安装:

tar –zxvf sendEmail-v1.55.tar.gz

  1. 发送邮件测试

Installation

SendEmail is a perl script/program, and only needs to be copied to a directory
in your path to make it accessible.  Most likely the following steps will
be sufficient:

1) Extract the package
    tar -zxvf sendEmail-v1.XX.tar.gz        //解开压缩包

2) Copy the sendEmail script to /usr/local/bin
    cp -a sendEmail-v1.XX/sendEmail /usr/local/bin   //拷贝可执行脚本到环境变量目录下/usr/local/bin

3) Make sure its executable
    chmod x /usr/local/bin/sendEmail     //把脚本添加可执行权限

4) Run it
    sendEmail
      or
    /usr/local/bin/sendEmail                //直接运行

NOTES:
  * Running sendEmail without any arguments will produce a usage summary.
  * SendEmail is written in Perl, so no compilation is needed.
  * On a Unix/Linux OS if your perl binary is not installed at /usr/bin/perl
    you may need to edit the first line of the script accordingly.

//不加任何参数使用sendEmail命令会出现使用方法提示

//SendEmail使用Perl语言编写,直接使用即可,不需要编译

//假如Perl没有安装在/usr/bin/perl下的时候需要修改脚本sendEmail的第一行定义相关Perl路径

三.使用方法:

Synopsis:  sendEmail -f ADDRESS [options]

  Required:
    -f ADDRESS                from (sender) email address              //发送人地址,除此之外至少使用一个-t或者-cc或者-bcc,邮件消息主体必须至少使用一个-m,或者标准输入读取,或者-o message-file
    * At least one recipient required via -t, -cc, or -bcc
    * Message body required via -m, STDIN, or -o message-file=FILE

  Common:
    -t ADDRESS [ADDR ...]     to email address(es)          //收件人地址
    -u SUBJECT                message subject              //邮件标题
    -m MESSAGE                message body               //邮件正文
    -s SERVER[:PORT]          smtp mail relay, default is localhost:25         //所使用发送邮件服务器(SMTP)

  Optional:
    -a   FILE [FILE ...]      file attachment(s)           //添加附件
    -cc  ADDRESS [ADDR ...]   cc  email address(es)     //普通抄送
    -bcc ADDRESS [ADDR ...]   bcc email address(es)    //暗抄送,其他人除发件人外看不见被暗抄送者
    -xu  USERNAME             username for SMTP authentication   //邮件服务器认证用户名
    -xp  PASSWORD             password for SMTP authentication    //邮件服务器认证密码

  Paranormal:
    -b BINDADDR[:PORT]        local host bind address                //绑定特定地址和端口号
    -l LOGFILE                log to the specified file                       //记录到特定日志文件
    -v                        verbosity, use multiple times for greater effect   //显示某些详细信息,用途未验证
    -q                        be quiet (i.e. no STDOUT output)     //静默模式,屏蔽屏幕输出
    -o NAME=VALUE             advanced options, for details try: --help misc  //指定特定参数项和其值
        -o message-content-type=<auto|text|html|other>            //指定正文文本格式,auto,text,html等等
        -o message-file=FILE               -o message-format=raw              //message-file指定邮件正文从文件读取,message-format指定消息正文格

        -o message-header=HEADER     -o message-charset=CHARSET           //message-header指定正文头部,message-charset指定正文字符集

        -o reply-to=ADDRESS          -o timeout=SECONDS                        //reply-to回复给指定地址,timeout指定超时时间
        -o username=USERNAME         -o password=PASSWORD          //username指定用户名,password指定密码
        -o tls=<auto|yes|no>         -o fqdn=FQDN                        //tls指定安全传输层协议(透明局域网服务?未验证)启用与否      fqdn意思是邮件地址显示全域名(Fully Qualified Domain Name)

  Help:
    --help                    the helpful overview you're reading now                      //列出帮助信息
    --help addressing         explain addressing and related options             //列出邮件地址类相关选项的帮助
    --help message            explain message body input and related options   //列出邮件正文类选项的帮助
    --help networking         explain -s, -b, etc                                                    //列出网络类选项的帮助
    --help output             explain logging and other output options            //列出输出信息类选项的帮助
    --help misc               explain -o options, TLS, SMTP auth, and more        //列出杂项类帮助

--------------------------------------------------------分隔线-----------------------------------------------------------------

四.例子:

sendEmail -f tom@mailserver.com -t tom@mailserver.com -s mail.mailserver.com -xu tom@mailserver.com -xp password -u "message subject" -m "message body"

//从发件人tom@mailserver.com发送给收件人tom@mailserver.com,通过的发件服务器为mail.mailserver.com,认证邮箱账号为tom@mail.server.com,账号密码为password,邮件主题为message subject,邮件正文为message body

cd sendEmail-v1.55

# sendEmail -h                (查看sendMail帮助)

cp sendEmail /usr/local/bin

# sendEmail -f dba@linuxidc.com -t god@linuxidc.com -s mail.linuxidc.com -u "nagios测试" -m "nagios test 测试"

chmod 0755 /usr/local/bin/sendEmail

各参数含义如下:
-f 表示发送者的邮箱, 可随意设置
-t 表示接收者的邮箱
-s 表示SMTP服务器的域名或者IP
-u 表示邮件的主题
-m 表示邮件的内容
-xu 表示SMTP验证的用户名, 如果SMTP服务器需要验证的话就加上该参数, 一般发给外网用户则需要
-xp 表示SMTP验证的密码, 如果SMTP服务器需要验证的话就加上该参数, 一般发给外网用户则需要
-a FILE [FILE ...]      file attachment(s)
-cc ADDRESS [ADDR ...]   cc  email address(es)
-bcc ADDRESS [ADDR ...]   bcc email address(es)

/usr/local/bin/sendEmail –f [email protected]–t [email protected]–s smtp.qq.com –u “合肥网来信啦” –xu username –xp 123456–m "合肥网来信啦,这是内容啊"

  1. 发送邮件高级用法

解释:

如果不带-m参数的话,就会提示你自行输入, 输入完成后使用CTRL-D来结束. 如果还要发送给外网邮件用户, 则还需设置SMTP验证:
# sendEmail -f dba@linuxidc.com -t god@linuxidc.com -bcc god@gmail.com -s mail.linuxidc.com -u "nagios测试" -m "nagios test 测试" -xu god -xp "iamgod"

-f 表示发送者的邮箱

也可以将一个文件的内容作为邮件的正文发出:
# sendEmail -f dba@linuxidc.com -t god@linuxidc.com -s mail.linuxidc.com -u "nagios测试" -o message-file=/var/log/messages

-t 表示接收者的邮箱

或者将一个文件的内容作为附件发出:
# sendEmail -f dba@linuxidc.com -t god@linuxidc.com -s mail.linuxidc.com -u "nagios测试" -m "pls see the attachement" -a /var/log/messages

-s 表示SMTP服务器的域名或者ip

--End--

-u 表示邮件的主题

图片 1

-xu 表示SMTP验证的用户名

-xp 表示SMTP验证的密码(注意,这个密码貌似有限制,例如我用d!5neyland就不能被正确识别)

-m 表示邮件的内容

其它方法

  使用mail命令发送邮件,有如下三种方式:

1、直接使用shell当编辑器

 代码如下

复制代码

mail -s "Hello from mzone.cc by shell" [email protected],this is the content of mail.welcome to www.mzone.cc     

第一行是输入的命令,-s表示邮件的主题,后面的[email protected]则是邮件的接收人,输入完这行命令后回车,会进入邮件正文的编写,我们可以输入任何文字,比如上面的两行。当邮件正文输入完成后,需要按CTRL D结束输入,此时会提示你输入Cc地址,即邮件抄送地址,没有直接回车就完成了邮件的发送。

2、使用管道进行邮件发送

 代码如下

复制代码

echo "hello,this is the content of mail.welcome to www.mzone.cc" | mail -s "Hello from mzone.cc by pipe" [email protected]  

   

使用管道直接敲入这行命令即可完成邮件的发送,其中echo后的是邮件正文。

3、使用文件进行邮件发送

 代码如下

复制代码

mail -s "Hello from mzone.cc by file" [email protected] < mail.txt     

 

使用上面的命令后,我们就可以把mail.txt文件的内容作为邮件的内容发送给[email protected]了

Linux下邮件发送又一方法sendEmail使用方法: 下载send...

本文由星彩网app下载发布于星彩网app下载,转载请注明出处:x使用mail命令发邮件,Linux下邮件发送

TAG标签: 星彩网app下载
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。