linux下配置电子邮件传输(一)

基本电子邮件发送

1.电子邮件发送

服务器使用SMTP协议将电子邮件提交至TCP端口25,或由本地客户端通过/usr/bin/sendmail程序进行提交。如果该MTA是最终目标位置,邮件将传递至MDA。否则,将使用MX记录在DNS中查找下一个MTA,并使用SMTP进行转发。
MDA:“邮件发送代理”。
MDA将邮件发送至收件人的本地邮件存储位置(默认情况下是/var/spool/mail/user)。
Postfix提供自己的MDA,以发送至基于文件的本地默认邮件存储位置/usr/libexec/postfix/local.
转发:电子邮件服务器(MTA)将提交的邮件转发至另一个服务器,以进行发送
排队:失败的发送或转发尝试排队等待,并由MTA定义重试。(默认情况下,Postfix每小时执行此操作一次)
拒绝:在首次提交期间,电子邮件被电子邮件服务器拒绝
退回:远程服务器接受电子邮件以进行发送以后,又将该电子邮件退回给始发电子邮件服务器和/或用户电子邮件已进行发送以后,又将该电子邮件退回给始发电子邮件服务器和/或用户
linux下配置电子邮件传输(一)_第1张图片

配置:

我们在配置邮件传输之前,需要两台互相之间可以通信的主机,接下来我会使用两台主机,一台主机名为westos-mail.westos.com,ip为172.25.254.10 一台主机名为qq-mail.qq.com ,ip为172.25.254.20
在两台主机上分别配置好yum源,在其中一台主机上安装dns解析服务,

以westos-mail.westos.com为例:
1.配置网络,ip为172.25.254.10
效果如下:
linux下配置电子邮件传输(一)_第2张图片
2.配置yum源,由于博主的yum源在其他主机上,所以

[root@westos-mail ~]# vim /etc/yum.repos.d/rhel_dvd.repo 
[rhel_dvd]
gpgcheck = 0
enabled = 1
baseurl = http://172.25.254.48/rhel7.0
name = Remote classroom copy of dvd
[root@westos-mail ~]# yum clean all

3.配置dns解析

[root@westos-mail ~]# yum install bind -y   ##安装服务
[root@westos-mail ~]# vim /etc/named.conf     ##更改主配置文件
 11 //      listen-on port 53 { 127.0.0.1; };  ##允许所有ip访问
 12 //      listen-on-v6 port 53 { ::1; };      ##允许所有端口
 17 //      allow-query     { localhost; };       ##允许所有主机
 32         dnssec-validation no;           
[root@westos-mail ~]# vim /etc/named.rfc1912.zones   ##更改子配置文件
zone "westos.com" IN {
        type master;
        file "westos.com.zone";
        allow-update { none; };
};

zone "qq.com" IN {
        type master;
        file "qq.com.zone";
        allow-update { none; };
};

[root@westos-mail ~]# cd /var/named/
[root@westos-mail named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@westos-mail named]# cp -p named.localhost westos.com.zone
[root@westos-mail named]# vim westos.com.zone      ##配置解析表
$TTL 1D
@       IN SOA  dns.westos.com. root.westos.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      dns.westos.com.
dns             A       172.25.254.10
westos.com.     MX 1    172.25.254.10.

[root@westos-mail named]# cp -p westos.com.zone qq.com.zone
[root@westos-mail named]# vim qq.com.zone              ##配置解析表
$TTL 1D
@       IN SOA  dns.qq.com. root.qq.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      dns.qq.com.
dns             A       172.25.254.10
qq.com.         MX 1    172.25.254.20.

[root@westos-mail named]# systemctl restart named    ##重启服务
[root@westos-mail named]# systemctl stop firewalld.service   ##关闭火墙
[root@westos-mail named]# systemctl disable firewalld.service   ##开机不启动火墙
[root@westos-mail named]# vim /etc/resolv.conf    ##编写dns指向
search westos.com
nameserver 172.25.254.10

测试:
[root@westos-mail ~]# dig -t mx westos.com
[root@westos-mail ~]# dig -t mx qq.com

linux下配置电子邮件传输(一)_第3张图片
linux下配置电子邮件传输(一)_第4张图片

4.在qq-mail主机上做dns指向

[root@qq-mail ~]# vim /etc/resolv.conf
search qq.com
nameserver 172.25.254.10
做完之后也可以检测一下
[root@qq-mail ~]# dig -t mx westos.com
[root@qq-mail ~]# dig -t mx qq.com

5.开始配置postfix

终于到正题了,接下来开始配置postfix,Postfix由postfix RPM包提供,并通过postfix服务脚本控制。它是一个由多个协同操作程序构成的模块化程序,它的组件由master进程控制。
Postfix的主配置文件是/etc/postfix/main.cf,可以使用文本编辑器或postconf命令进行编辑。postconf
命令还可用于确定Postfix的所有当前和默认配置设置或逐项确定这些设置。
默认情况下,Postfix仅侦听来自本地主机的传入电子邮件。若要重新配置postfix以接收从远程主机发
送的本地邮件,必须在/etc/postfix/main.cf中设置inet_interfaces = all
对电子邮件进行故障排除时,将在/var/log/maillog中保留所有与邮件相关的操作日志,其中包括关于
被事件和成功事件的信息。mailq命令(或postqueue -p)显示已排队的所有传出邮件的列表。若要尝试
再次立即发送所有已排队的邮件,可以运行postfix flush命令(或postqueue -f);否则,postfix将大
约每小时尝试重新发送一次,直至邮件被接受或过期。

重要的Postfix配置指令
可以在/etc/postfix/main.cf文件中找到以下所有指令。

myorigin
重写本地发布的电子邮件,使其显示为来自该域。这样有助于确保响应返回入站邮件服务器
默认:myorigin = $myhostname

inet_interfaces
控制Postfix侦听传入电子邮件的网络接口。如果设置为loopback-only,仅侦听127.0.0.1::1,
如果设置为all,则侦听所有网络接口。还可以指定特定地址。
默认:inet_interfaces = localhost

mydestination
收到地址为这些域的电子邮件将传递至MDA,以进行本地发送。
默认:mydestination = $myhostname, localhost.$mydomain, localhost

mynetworks
IP地址和网络的逗号分隔列表(采用CIDR表示法)。这些地址和网络可以通过此MTA转发至
任何位置,无需进一步身份验证。
默认:mynetworks = 127.0.0.0/8

relayhost
relayhost转发所有通过的出站邮件。通常用方括号指定,以阻止MX记录查找。
默认:relayhost =

local_transport
收件地址为$mydestination的邮件的发送方式。默认情况下,设置为local:$myhostname(使用
Local MDA将传入电子邮件发送到/var/spool/mail中的本地邮件存储位置)
默认:local_transport = local:$myhostname

postconf -d 显示默认值。
postconf -n显示不同于默认值的更改。

1.编辑postfix主配置文件(两台主机都需要)

默认情况下邮件端口只在127.0.0.1上开启
在westos-mail主机:

[root@westos-mail ~]# vim /etc/postfix/main.cf 
76 myhostname = westos-mail.westos.com    ##指定mta主机名称
83 mydomain = westos.com      ##指定mta的域名
99 myorigin = $mydomain        ##指定邮件来源结尾(@后面的字符内容)
116 inet_interfaces = all       ##25端口开启的网络接口
164 mydestination = $myhostname, $mydomain, localhost  ## 接受邮件来源结尾字符的指定
[root@westos-mail ~]# systemctl restart postfix.service 
[root@westos-mail ~]# systemctl stop firewalld

在qq-mail主机

[root@qq-mail ~]# vim /etc/postfix/main.cf 
76 myhostname = qq-mail.qq.com    ##指定mta主机名称
 83 mydomain = qq.com      ##指定mta的域名
99 myorigin = $mydomain        ##指定邮件来源结尾(@后面的字符内容)
116 inet_interfaces = all       ##25端口开启的网络接口
164 mydestination = $myhostname, $mydomain, localhost   ##接受邮件来源结尾字符的指定
[root@qq-mail ~]# systemctl restart postfix.service 
[root@qq-mail ~]# systemctl stop firewalld.service 

2.邮件别名

配置:
[root@westos-mail ~]# vim /etc/aliases
admin: root
moreuser: :include:/etc/postfix/moreuser
别名: 真名
别名: :include:filename
[root@westos-mail ~]# vim /etc/postfix/moreuser ##填写别名
westos
[root@westos-mail ~]# postalias /etc/postfix/
[root@westos-mail ~]# systemctl restart postfix.service

测试:
从qq-mail给westos-mail发送两封邮件,一封给[email protected] 一封给[email protected] ,然后在westos-mail这边查看,看root用户有没有收到两封。

[root@qq-mail ~]# mail root@westos.com
Subject: 123  ##标题
111           ##内容
111
.      ##用“.”来结束录入内容并发送
EOT
[root@qq-mail ~]# mailq   ##查看邮件队列
Mail queue is empty
[root@qq-mail ~]# mail admin@westos.com
Subject: 456
111
1144
.
EOT
[root@westos-mail ~]# postqueue -f  ##重新处理邮件队列

在westos-mail查看:

[root@westos-mail ~]# mail 
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 2 messages 1 new 2 unread
 U  1 root                  Mon May 22 06:16  23/726   "123"
>N  2 root                  Mon May 22 06:17  22/721   "456"
& 2
Message  2:
From root@qq.com  Mon May 22 06:17:14 2017
Return-Path: .com>
X-Original-To: admin@westos.com
Delivered-To: admin@westos.com
Date: Mon, 22 May 2017 18:17:14 +0800
To: admin@westos.com
Subject: 456
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@qq.com (root)
Status: R

111
1144

& q
Held 2 messages in /var/spool/mail/root

3.通过远程主机测试邮件服务

在48主机上安装服务,可以远程从一台主机给一台主机发送邮件

[root@foundation48 ~]# yum install telnet -y
[root@foundation48 ~]# telnet 172.25.254.10 25   发送端口为25
Trying 172.25.254.10...
Connected to 172.25.254.10.
Escape character is '^]'.
220 westos-mail.westos.com ESMTP Postfix
ehlo hello    检测是否连接成功
250-westos-mail.westos.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from:[email protected]    从westos.com端发送邮件
250 2.1.0 Ok
rcpt to:[email protected]     接受端为qq.com
250 2.1.5 Ok 
data              编写内容的命令
354 End data with .
qqqqqqqqqqqq      具体内容
.
250 2.0.0 Ok: queued as F14F317E84A
quit         结束
221 2.0.0 Bye
Connection closed by foreign host.

你可能感兴趣的:(linux)