linux中的sendmail发送邮件

Linux/UNIX 下的老牌邮件服务器。
Sendmail 作为一种免费的邮件服务器软件,已被广泛的应用于各种服务器中,它在稳定性、可移植性、及确保没有 bug 等方面具有一定的特色,且可以在网络中搜索到大量的使用资料。

一、邮件发送原理图

MUA:Mail User Agent,邮件用户代理,用来编写,收发邮件
MTA:Mail Transfer Agent,邮件传输代理,将邮件传输到正确目的地
MDA:Mail Delivery Agent,邮件分发代理,将邮件分发到正确目的用户
       
举例说明,假如A用户使用的是QQ邮箱,B用户使用的是163邮箱,A要向B发送一封邮件。流程如下:
    1、A用户通过MUA编写好邮件,并发送
    2、该邮件通过MTA,首先发送到QQ邮件服务器
    3、QQ邮件服务器分析到目的邮箱地址是163,所以再通过MTA传送到163邮件服务器
    4、163邮件服务器收到该邮件
    5、由于使用163邮箱的用户有很多,再通过MDA把该邮件发送到正确的用户
    6、B用户通过MUA就可以查看A用户发送的邮件。

二、安装

mail是MUA,sendmail是MTA
1. sendmail必须先要安装两个包
    sudo apt-get install sendmail
    sudo apt-get install sendmail-cf   # 配置工具
  
2. ubuntu下最常使用的是mail功能,需要安装mailutils
    sudo apt-get install mailutils
    
3. 若需要使用带“附件”的功能,还需要安装sharutils
    sudo apt-get install sharutils
   
4. 测试
    输入命令:ps aux | grep sendmail
相关文件:

三、配置

默认情况下,sendmail只会为本机用户发送邮件,若要将它扩展到整个Internet,则修改sendmail配置宏文件,路径为/etc/mail/sendmail.mc
 
sudo vi /etc/mail/sendmail.mc
   
将Addr=127.0.0.1改为0.0.0.0,表明可以连接到任何服务器上
   
保存修改的文件,下面备份配置文件:
cd /etc/mail
mv sendmail.cf  sendmail.cf~
  
然后生成新的配置文件:
m4 sendmail.mc > sendmail.cf
  
重启sendmail生效:systemctl restart sendmail  或者 /etc/init.d/sendmail restart

四、测试发送邮件

常用的发送邮件方式有以下几种:
    1. 如何写一般的邮件: mail test@qq.com  Cc 编辑抄送对象,Subject:邮件主题,输入回车,邮件正文后,按Ctrl-D结束
    2. 快速发送方式: echo "邮件正文" | mail -s "邮件主题" test@126.com
    3. 以文件内容作为邮件正文来发送: mail -s test test@126.com < test.txt
    4. 发送带附件的邮件: uuencode 附件 附件名| mail -s "邮件标题" 收信人 -b 密送人 -- -f 发信人 -F 发信人名称
查看日志:tail -f /var/log/mail.log

五、邮件发送问题

1、发送失败,日志报错 My unqualified host name (node1) unknown; sleeping for retry
/var/log/mail.log日志有如下报错:
这个错误输出实际上使问题非常清楚。文本的意思正是它所说的。这意味着 Sendmail  无法解析您的完全限定域名 unqualified host name。
在我们的例子中,系统的主机名是node1(hostname命令查看)
要解决此问题,请更改: /etc/hosts
重启服务:systemctl restart sendmail
再次发送邮件:echo '邮件内容' | mail -s '邮件标题' 1162886013@qq.com
tail -f /var/log/mail.log的日志显示:
查看邮箱是否收到:收到了
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值