邮件服务器搭建

邮件服务配置

Linux服务器发送电子邮件,通常是出于自动用途或者是向管理员报告错误。它们通常直接或间接使用名为/usr/sbin/sendmail的标准程序来发送这些邮件在实际中,大部分服务器都受到监控,并且在发生事件时发出邮件

这通常都需要一个以配置的/usr/sbin/sendmail来发送电子邮件,以通过使用公司SMTP服务器传输邮件来向负责系统管理员进行通知

 

空客户端

一个运行在本地邮件服务器的客户端计算机,它将所有电子邮件转发到出站邮件中继以进行发送

空客户端不接受任何邮件的本地发送,它只能将这些邮件发送到出站邮件中继

用户可以在空客户端上运行邮件客户端来读取和发送电子邮件

配置Postfix空客户端,将使用sendmail和SMTP协议,通过现有的传出邮件服务器将邮件传输到外部

 

电子邮件消息的传输

在大部分情况下,要发送电子邮件,邮件客户端与传出邮件服务器进行通信,后者可帮助将该邮件中继到其最终目标

邮件客户端使用简单邮件传输协议将邮件传输到邮件服务器

传出邮件中继可能不需要来自内部客户端的身份验证。在此情况下,中继将通过基于IP地址的限制或防火墙规则来限制哪些主机可以进行中继

传出邮件中继随后使用DNS来查找MX记录,该记录用于标识哪个邮件服务器接受发送到收件人域的邮件的传递。

中继随后使用端口25/TCP上的SMTP将电子邮件传输到该服务器

收件人的邮件服务器可能提供POP3或IMAP服务器以允许专用邮件客户端下载其邮件

 

MOA 邮件用户代理


MRA 邮件检索代理


MDA 邮件投递代理


MTA 邮件传输代理

 

本域发送一封邮件,首先MRA检索是否发送给本地,如果不是,那么MTA传输给中继邮件服务器(域外)

 

Postfix

功能强大易于配置的邮件服务器

 

安装

1 yum install -y postfix

 

添加邮件用户

useradd mailself

echo 123456 | passwd --stdin mailself

 

修改主配置文件

方式一:

vim /etc/postfix/main.cf 

    # 修改服务器域名
    mydomain = example.com

    # 对所有IP地址提供服务
    inet_interfaces = all

    # 提供服务类型,这里只讨论邮件发送
    mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,mail.$mydomain

方式二:

postconf -e "mydomain = example.com"

postconf -e "inet_interfaces = all"

postconf -e "mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,mail.$mydomain"

 

重启postfix服务

systemctl enable postfix

systemctl restart postfix

 

测试

安装telnet插件

1 yum install -y telnet

 

修改DNS服务器,因为我们发送邮件需要域名服务,如何配置DNS服务器请查看本人博客,DNS服务器中记录example.com一定要指向本机,否则邮件服务器不能发送邮件到指定域

 

使用mail命令

# 发送邮件
    mail -s <标题> 用户名@域名

    mail -s aaa mailself@example.com
    54545
    574878asdgasgsag
    .(回车结束)
    EOT

# 切换用户

    su - mailself

# 查看是否收到邮件

    mail

        "/var/spool/mail/mailself": 1 message 1 new
        >N  1 root                  Tue Jan 23 21:20  24/605   "aaa"
        & 1
        Message  1:
        From root@server.example.com  Tue Jan 23 21:20:55 2018
        Return-Path: <root@server.example.com>
        X-Original-To: mailself@example.com
        Delivered-To: mailself@example.com
        Date: Tue, 23 Jan 2018 21:20:55 +0800
        To: mailself@example.com
        Subject: aaa
        User-Agent: Heirloom mailx 12.5 7/5/10
        Content-Type: text/plain; charset=us-ascii
        From: root@server.example.com (root)
        Status: R

        54545
        574878asdgasgsag

# 接收成功!!!

 

使用telnet命令

# 发送邮件
    telnet mail.example.com 25

    helo example.com

    mail from:root@example.com

    rcpt to:mailself@example.com

    data

    subobject:<标题>
    <内容>
    asf
    asf
    saf
    .<回车结束>

    quit

# 切换用户查看

    su - mailself

    mail

        >N  2 root@example.com      Tue Jan 23 21:27  16/501   
        & 2
        Message  2:
        From root@example.com  Tue Jan 23 21:27:55 2018
        Return-Path: <root@example.com>
        X-Original-To: mailself@example.com
        Delivered-To: mailself@example.com
        subobject:titleas
        Date: Tue, 23 Jan 2018 21:25:49 +0800 (HKT)
        From: root@example.com
        Status: R

        asf
        asf
        saf

# 接收成功!!!

 

Dovecot

postfix不支持远程读取邮件功能,所以邮件只能在服务器端打开,dovecot可以远程接收服务器中的邮件

Dovecot 是一个开源的 IMAP 和 POP3 邮件服务器

POP / IMAP 是 MUA 从邮件服务器中读取邮件时使用的协议。

其中,与 POP3 是从邮件服务器中下载邮件存起来,IMAP4 则是将邮件留在服务器端直接对邮件进行管理、操作。

 

软件包安装

1 yum install -y dovecot

 

修改主配置文件

vim /etc/dovecot/dovecot.conf

    # 支持协议类型
    protocols = imap pop3 lmtp

    # 允许网络
    login_trusted_networks = 0.0.0.0/0

    dict {

    }
  :wq

vim /etc/dovecot/conf.d/10-auth.conf

    # 这里不讨论安全配置,只实现功能
    #disable_plaintext_auth = yes
  :wq

vim /etc/dovecot/conf.d/10-ssl.conf 

    # 这里不讨论安全配置,只实现功能
    ssl = no
  :wq
vim /etc/dovecot/conf.d/10-mail.conf

    # 本地邮件接收路径
    mail_location = mbox:~/mail:INBOX=/var/mail/%u

    # 默认没有注释
    mbox_write_locks = fcntl
  :wq
# 切换用户
    su - mailself

# 创建用户邮件目录
    mkdir -p mail/.imap/INBOX

 

重启服务(服务器端)

systemctl enable dovecot

systemctl restart dovecot

 

测试

# 使用mail命令
  mail -s test -r root@example.com mailself@example.com
  aaa
  bbb
  c
  c
  .
  EOT
# 登陆到远程主机,非服务器
    ssh root@192.168.198.129

# 使用telnet命令查询服务器中mailself用户的邮件
    telnet 192.168.198.128 110
    Trying 192.168.198.128...
    Connected to 192.168.198.128.
    Escape character is '^]'.
    +OK [XCLIENT] Dovecot ready.
    user mailself
    +OK
    pass 123456
    +OK Logged in.
    +OK 4 messages:
    1 571
    2 466
    3 568
    4 536
    retr 4
    +OK 536 octets
    Return-Path: <root@example.com>
    X-Original-To: mailself@example.com
    Delivered-To: mailself@example.com
    Received: by server.example.com (Postfix, from userid 0)
    id 6DAAE24A7D0; Wed, 24 Jan 2018 16:37:09 +0800 (HKT)
    Date: Wed, 24 Jan 2018 16:37:09 +0800
    From: root@example.com
    To: mailself@example.com
    Subject: test
    Message-ID:         <5a6845b5.rO/WPg7zdER17ROV%root@example.com>
    User-Agent: Heirloom mailx 12.5 7/5/10
    MIME-Version: 1.0
    Content-Type: text/plain; charset=us-ascii
    Content-Transfer-Encoding: 7bit

    aaa
    bbb
    c
    c
    .
# 成功查询服务器中用户的邮件!!!

 

posted @ 2018-01-23 22:05  前路~  阅读(752)  评论(0编辑  收藏  举报