邮件服务器搭建
邮件服务配置
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 . # 成功查询服务器中用户的邮件!!!