700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Linux使用mailx通过第三方SMTP发送邮件 带附件操作

Linux使用mailx通过第三方SMTP发送邮件 带附件操作

时间:2022-10-28 09:57:12

相关推荐

Linux使用mailx通过第三方SMTP发送邮件 带附件操作

Ubuntu 18.04 上已经移除了heirloom-mailx这个安装包,有新需求的可参看这篇文章 Ubuntu 18.04 中使用 Postfix 发送邮件。

mail 默认是调用本机 MTA 发送邮件的,这意味着需要在本机上安装sendmailpostfix等 MTA,配置比较麻烦,而且会带来不必要的资源占用。通过修改配置文件,可以达到不使用sendmail而用外部 smtp 服务器发送邮件的目的。

安装mailx

$ sudo apt-get install heirloom-mailx

配置mailx

如果你不确定你的系统中的 mail/mailx 的配置文件的文件名,可以在终端执行下面的命令来查看:

strings `which mail` | grep '\.rc'

我的系统版本是Ubuntu 16.04

/etc/s-nail.rc中加入配置文本

set from=User@set smtp=set smtp-auth-user=Userset smtp-auth-password=passwordset smtp-auth=login---说明from:对方收到邮件时显示的发件人smtp:指定第三方发邮件的smtp服务器地址set smtp-auth-user:第三方发邮件的用户名set smtp-auth-password:用户名对应的密码,有些邮箱填的是授权码smtp-auth:SMTP的认证方式,默认是login,也可以改成CRAM-MD5或PLAIN方式

测试

关闭系统的sendmail服务,如果开启了的话。

mail [option] [-a file] [-s subject] [-c c_adress] [-b b_adress] to-address ...

常用命令:n:不读入设置文件(本系统中是/etc/s-nail.rc)(这个文件允许用户使用外部邮件传输代理而不是使用系统自带的sendmail发送邮件)。s:设置邮件的主题信息。c:使用一个抄送列表。b:使用一个密送列表。

无邮件正文

mail -s "主题" 收件地址

可以把当前shell当成编辑器来用,编辑完内容后按Ctrl-D结束。

有邮件正文

文件内容发送

mail -s "主题" 收件地址 < 文件路径文件名

mail -s "test" xxx@ < ./xxx/xxx.txtcat 邮件正文.txt | mail -s 邮件主题 xxx@

单内容发送

echo "邮件正文内容" | mail -s "邮件主题" xxx@

带附件

注意-a的位置放置有讲究。

mail -a 附件 -s "主题" 收件地址 < 文件(邮件正文.txt)

mail -a /data/xxx.tar.gz -s "Linux mail test" xxx@ < ./xxx/xxx.txt

对于担心邮件内容被非8-bit clean的机器污染,可以使用uuencode进行binary-to-text的转换进行发送。

首先安装$ sudo apt-get install sharutils

参数第一个 attachment 是需要编码的文件名,第二个 attachment 是解码时得到的文件名。uuencode attachment attachment > attachment_uu mail -a attachment_uu -s "Linux mail attachment" xxx@ < ./xxx/xxx.txt

接收方接收后使用

uudecode attachment_uu即可解压得到文件名为attachment的文件 (编码时的第二个参数)。

uuencode可以使用-m选项选择base64的编码方式,对具体原理感兴趣的请自行查阅。

在 Winows 中,用 Outlook、Foxmail 等客户端能自动识别经过 uuencode 编码的附件。如果附件被收取到 Linux/Unix 等系统下,如果 Linux 下的 MUA 或者客户端不识别,可以手工处理邮件提取相应的部分,用 uudecode 解码即可。

查看邮件

mail

常用命令(邮件命令提示符中常用命令)h: 查看邮件标题。d: 使用该命令加序号可以删除指定的邮件。f: 查看当前光标指向的邮件。n: 跳转到指定序号的邮件。w: 保存邮件信息到文件,保存附件到单独的文件。q: 退出并将已阅读的邮件存入文件~/mbox中。x: 退出不保持之前的操作,如删除邮件等。!: 允许使用shell命令。

sendmail

mailq或者sendmail -bp可以查看当前仍在队列里待发送的邮件,如何删除该队列呢?删除下面文件夹下的文件即可/var/spool/postfix/deferred/再次运行检查队列得到: Mail queue is empty/var/log/syslog文件中也会保存发送失败的信息

sendmail安装

$ sudo apt-get install sendmail $ sudo apt-get install sendmail-cf 其他附件:spamassassin, 提供邮件过滤

sendmail配置

根据.mc文件生成配置.cf文件m4 /etc/mail/sendmail.mc > /etc/sendmail.cf

输入ps aux | grep sendmail查看是否安装成功,看到信息sendmail: MTA: accepting connections

关闭并重启sendmail服务/etc/init.d/sendmail stopps -ef | grep sendmail | awk '{print $2}' | xargs kill -5 /etc/init.d/sendmail start

邮件内容、附件处理

sudo apt-get install mpack用于解析 MIME 类型的信息,使用munpack即可用于消息里的附件和内容分离。

sudo apt-get install procmail用于 MDA,过滤消息等。

sudo apt-get install getmail4,并配置好 getmail,抓取 mail。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。