郵件服務的修真之旅

一、築基期之郵件服務簡介

郵件服務通過以下幾個協議來實現
簡單郵件傳輸協議(SMTP),用來發送或中轉發出的電子郵件,佔用tcp 25端口。
郵局協議 第三版(POP3),用於把服務器上的郵件存儲到本地主機,佔用tcp 110端口。
互聯網信息訪問協議 第四版(IMAP4),用於在本地主機上訪問郵件,佔用tcp 143端口。
瞭解了三種協議,現在再來看看郵件服務的基本概念
郵件傳輸:MT 郵件傳輸代理:MTA
郵件投遞:MD 郵件投遞代理:MDA
郵件用戶:MU 郵件用戶代理:MUA
在一臺郵件服務器上,用戶要寫一封郵件,是通過MUA(郵件用戶代理)來寫郵件的;寫好郵件後將郵件提交本地SMTPD服務(MTA);SMTPD服務對郵件進行分類,本地的郵件直接通過lmtp(本地郵件傳輸協議)放在本地;需要遠程發送的郵件通過smtp客戶端發送遠程SMTP主機的服務端;遠程SMTPD將郵件通過MDA發送到本地郵局,接收方通過MUA將郵件接收到自己的家目錄

郵件服務的修真之旅

實現SMTP協議使用postfix,實現pop3和imap4協議使用dovecot,同時部署用於實現域名解析的bind服務器

郵件服務的修真之旅

二、開光期之部署named服務

2.1、環境準備

關閉防火牆

systemctl stop firewalld.service 

2.2、配置bind服務以提供域名解析

模擬內網環境:使用系統光盤作yum源

2.2.1、掛載鏡像至/media目錄下

mkdir /media/cdrom
mount /dev/cdrom /media/cdrom

2.2.2、啓用c7-media源

yum-config-manager --enable c7-media

2.2.3、使用c7-media源安裝bind

yum -y install bind bind-libs bind-libs-lite bind-license bind-utils

2.2.4、配置bind

備份配置文件:cp /etc/named.conf{,.bak}
修改全局配置中的監聽地址,加上本機可與外網通信的地址

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };
        recursion yes;
    dnssec-enable yes;
dnssec-validation yes;
};

2.2.5、配置bind解析郵件服務

添加正反向區域(根據實際情況配置)
vim /etc/named.rfc1912.zones

zone "zhongdianjizhi.com" IN {
        type master;
        file "zhongdianjizhi.com.zone";
        allow-update { none; };
};
zone "118.168.192.in-addr.arpa" {
        type master;
        file "zhongdianjizhi.com.local";
        allow-update { none; };
};

定義區域解析庫文件(配置A記錄與MX記錄)
cd /var/named

cp -p named.localhost zhongdianjizhi.com.zone
cp -p named.localhost zhongdianjizhi.com.local 

zhongdianjizhi.com.zone

$TTL 1D
@       IN SOA  @ zhongdianjizhi.com. (
                                        201901  ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       192.168.118.150
        MX 10   mail.zhongdianjizhi.com.
mail    A       192.168.118.150
mail    AAAA    fe80::3f32:be25:88e8:79b1

zhongdianjizhi.com.local

$TTL 1D
@       IN SOA  @ zhongdianjizhi.com. (
                                        201901  ; serial 
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       192.168.118.150
        MX 10   mail.zhongdianjizhi.com.
150     PTR     mail.zhongdianjizhi.com.
        AAAA    fe80::3f32:be25:88e8:79b1

2.2.6、檢查配置文件是否有語法錯誤

named-checkzone "zhongdianjizhi.com.zone" /var/named/zhongdianjizhi.com.zone
named-checkzone "118.168.192.in-addr.arpa" /var/named/zhongdianjizhi.com.local 

2.2.7、修改主機名,指定本機DNS

hostnamectl set-hostname mail.zhongdianjizhi.com

將本機dns解析指向本機dns服務器

vim /etc/resolv.conf 
nameserver 192.168.118.150

2.2.8、啓動named服務(bind是包名,服務名爲named)

systemctl start named
systemctl enable named

2.2.9、測試解析

dig -t A mail.zhongdianjizhi.com @192.168.118.150
dig -x 192.168.143.130 @192.168.118.150

三、融合期之postfix部署

在centos7系統中postfix已經安裝,版本爲2.10.1

3.1、配置postfix

備份
cp /etc/postfix/main.cf{,.bak}
配置文件main.cf

#第76行 修改郵局主機名
myhostname = mail.zhongdianjizhi.com
#第83行 修改郵局域名
mydomain = zhongdianjizhi.com
#第99行 修改寄出郵件域名
myorigin = $mydomain
#第114行 修改監聽所有網卡
inet_interfaces = all
#第119行 開啓同時使用ipv4和ipv6協議
inet_protocols = all
#第164行 修改可接收郵件的主機名和域名
mydestination = $myhostname, $mydomain
mynetworks = 192.168.118.0/24, 127.0.0.0/8
home_mailbox = Maildir/

3.2、編輯/etc/hosts文件

vim /etc/hosts

192.168.118.150 [email protected]

3.3、啓動服務,並檢查MTA是否運行

systemctl start postfix
systemctl enable postfix
alternatives --display mta

3.4、創建虛擬用戶

useradd jym 
echo '123456' |passwd --stdin jym
useradd boss
echo '123456' |passwd --stdin boss

3.5、測試postfix發郵件

[root@mail ~]# telnet mail.zhongdianjizhi.com 25
Trying 192.168.118.150...
Connected to mail.zhongdianjizhi.com.
Escape character is '^]'.
220 mail.zhongdianjizhi.com ESMTP Postfix
mail from:[email protected]
250 2.1.0 Ok
rcpt to:[email protected]
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
this is test mail.
.
250 2.0.0 Ok: queued as 43A6B2033E0D
quit
221 2.0.0 Bye
Connection closed by foreign host.

四、金丹期之dovecot部署

4.1、安裝

yum install dovecot

4.2、配置

備份

cp /etc/dovecot/dovecot.conf{,.bak}

配置dovecot.conf

sed -i '24s/^#//g' /etc/dovecot/dovecot.conf
sed -i '48s/#login_trusted_networks =/login_trusted_networks = 192.168.118.150\/24/g' 

修改子配置文件10-mail.conf

sed -i '24s/^#//g' /etc/dovecot/conf.d/10-mail.conf

4.3、啓動

systemctl start dovecot
systemctl enable dovecot

4.4、測試dovecot收郵件

[root@mail named]# telnet mail.zhongdianjizhi.com 110
Trying 192.168.118.150...
Connected to mail.zhongdianjizhi.com.
Escape character is '^]'.
+OK [XCLIENT] Dovecot ready.
user jym
+OK
pass 123456
+OK Logged in.
list
+OK 6 messages:
1 559
2 559
3 559
4 2564
5 2564
6 469
.
retr 6
+OK 469 octets
Return-Path: <[email protected]>
X-Original-To: [email protected]
Delivered-To: [email protected]
Received: from unknown (unknown [192.168.118.150])
    by mail.zhongdianjizhi.com (Postfix) with SMTP id 86CAC2033DFF
    for <[email protected]>; Sun, 30 Jun 2019 10:20:50 -0400 (EDT)
Message-Id: <[email protected]>
Date: Sun, 30 Jun 2019 10:20:50 -0400 (EDT)
From: [email protected]

this is test mail.

.

五、元嬰期之繼續修行

本次部署的郵件服務適用於內部網絡,郵件服務用於消息通知,發件與收件由腳本完成,用於連接互聯網的郵件服務建議配置webmail(Extmail與Extman)來收發件,win平臺使用LDAP來管理用戶認證,linux平臺使用Courier-authlib與MySQL來管理用戶認證,同時務必關閉開放式中繼。

參考文章:

https://blog.51cto.com/12227558/2074095
https://blog.51cto.com/13728740/2141927

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章