当前位置 主页 > 服务器问题 > win服务器问题汇总 >

    Linux部署msmtp+mutt发送邮件功能

    栏目:win服务器问题汇总 时间:2019-10-26 14:04

    一、前言

    首先,得明白发送一封邮件的流程,下面一段理论摘抄自廖雪峰的官网网站https://www.liaoxuefeng.com/article/00137387674890099a71c0400504765b89a5fac65728976000

    """

    我们通常使用Email都很容易,但是Internet的邮件系统是通过几个复杂的部分连接而成的,对于最终用户而言,我们熟悉的Outlook,Foxmail等都是用来收信和发信的,称之为MUA:Mail User Agent,邮件用户代理。

    MUA并非直接将邮件发送至收件人手中,而是通过MTA:Mail Transfer Agent,邮件传输代理代为传递,Sendmail和Postfix就是扮演MTA的角色。

    一封邮件从MUA发出后,可能通过一个或多个MTA传递,最终到达MDA:Mail Delivery Agent,邮件投递代理,邮件到达MDA后,就存放在某个文件或特殊的数据库里,我们将这个长期保存邮件的地方称之为邮箱。

    一旦邮件到达邮箱,就原地不动了,等用户再通过MUA将其取走,就是用Outlook,Foxmail等软件收信的过程。

    所以一封邮件的流程是:

    发件人:MUA --发送--> MTA -> 若干个MTA... -> MTA -> MDA <--收取-- MUA:收件人

    MUA到MTA,以及MTA到MTA之间使用的协议就是SMTP协议,而收邮件时,MUA到MDA之间使用的协议最常用的是POP3或IMAP。

    需要注意的是,专业邮件服务商都有大量的机器来为用户服务,所以通常MTA和MDA并不是同一台服务器,因此,在Outlook等软件里,我们需要分别填写SMTP发送服务器的地址和POP3接收服务器的地址。

    """

    同样对发邮件流程介绍的很清楚的还有这篇博文:https://www.cnblogs.com/DLHe/p/8457393.html

    由上面可知,通常我们所熟悉的Outlook、Foxmail等是邮件客户端,提供了MUA的功能;而一些Email服务提供商,如网易、QQ等,则提供了MTA的功能。

    必须弄清楚的一点是,本次部署的msmtp+mutt其实是类似于Foxmail那样的MUA邮件客户端,只不过它是在linux上运行的。而如果在linux上部署的是sendmail或者postfix,那才是邮件服务器,起到的是MTA的功能。

    接下来是实施步骤。

    实测成功的部署环境:RHEL6.5和CentOS6.5,当然了,机器得能联网。

    二、安装msmtp

    msmtp是一个SMTP客户端,可将邮件发送至SMTP服务端,官网地址为http://msmtp.sourceforge.net/index.html  。

    1.下载msmtp文件

    cd /usr/local/src

    wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.32/msmtp-1.4.32.tar.bz2/download

    2.解压文件

    tar jxvf msmtp-1.4.32.tar.bz2

    3.进入到解压的文件内,然后就是典型的源码安装的3个步骤./configure,make和make install

    3.1执行./configure,生成 Makefile,为下一步的编译做准备,--prefix=后面接的是想要将msmtp安装到的路径,跟当前mstmp源码所在目录无关

    cd msmtp-1.4.32
    ./configure --prefix=/usr/local/msmtp

    3.2 make && make install,编译并安装,这两步也可以分开执行

    4. 在安装目录/usr/local/msmtp/下新建etc目录,并在etc目录下创建msmtp文件,该文件用于配置邮件发送的一些基本信息。

    mkdir –p /usr/local/msmtp/etc
    vim /usr/local/msmtp/etc/msmtprc
    #添加如下内容:
    account default 
    host smtp.163.com   
    port 25
    from xxx@163.com //按照实际情况填写真实的163邮箱
    auth login
    tls off
    user xxx  //邮箱用户名,是xxx而不是xxx@163.com  
    password xxx //需要注意的是这里的密码有可能是授权码,比如163邮箱的话这里就必须填授权码,如下图  
    logfile /var/log/mmlog