Postfix服務器的配置

實驗環境:Centos6.0

 

Port:

SMTP    25

POP3 110

IMAP 143

POP3s 995

IMAPs 993

 

 

# yum install postfix dovecot -y

 

1.MTA服務器的設定(Postfix基礎設定)

 

# vim /etc/postfix/main.cf

*****************************************************************************

修改添加:

myhostname = Server1.example.com

myorigin = $myhostname

inet_interfaces = all

inet_protocols = all

mydestination = $myhostname, localhost.$mydomain, localhost www.linux.jjf

mynetworks = 192.168.0.0/24, 127.0.0.0/8, hash:/etc/postfix/access

relay_domains = $mydestination

alias_maps = hash:/etc/aliases

alias_database = hash:/etc/aliases

*****************************************************************************

 

# postmap hash:/etc/postfix/access

# postalias hash:/etc/aliases

# /etc/init.d/postfix check

# /etc/init.d/postfix restart

# netstat -tunlp|grep 25

 

設定郵件主機權限與過濾機制

# vim /etc/postfix/access

****************************************************************************

192.168.1.      REJECT

123.com         REJECT

192.168.2.123   OK

edu.cn          OK

****************************************************************************

# postmap hash:/etc/postfix/access (更新訪問控制數據庫,更改後無需重啓立即生效)

 

 

設定郵件別名:/etc/aliases

 

# vim /etc/aliases

****************************************************************************

添加:

用戶X: 別名1,別名2,別名3,別名4,[email protected] (用戶X的郵件會自動發給別名1,2,3,4和[email protected])

****************************************************************************

# postalias hash:/etc/aliases (更新別名數據庫)

 

 

個人化郵件傳遞:~/.forward

$ vim ~/.forward (普通用戶名jjf)

****************************************************************************

jjf

sust

[email protected] (用戶JJF的郵件不但自己保留一份,而且自動轉發給sust和[email protected])

****************************************************************************

$chmod 644 ~/.forward

 

 

# postqueue -p (查看郵件隊列內是否留有待發郵件、一般情況下應該沒有遺留郵件)

# postcat 6E81821AC2 (查看留在郵件隊列裏的郵件,6E81821AC2是隊列內郵件的queue的ID)

# postfix flush (強制將郵件隊列內的郵件寄送出去)

 

 

2.MRA服務器的設定(dovecot的設定)

 

# vim /etc/dovecot/dovecot.conf

**************************************************************************

protocols = imap pop3

**************************************************************************

 

# vim /etc/dovecot/conf.d/10-ssl.conf(明文郵件傳輸)

**************************************************************************

ssl = no

**************************************************************************

 

加密的POP3s/IMAPs設定

1>建立證書並放於指定位置

# cd /etc/pki/tls/certs/

# make Server1dovecot.pem

# mv /etc/pki/tls/certs/Server1dovecot.pem /etc/pki/dovecot

# restorecon -Rv /etc/pki/dovecot

 

2>配置dovecot,只要POP3s、IMAPs即可,取消明文傳輸

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

*************************************************************************

ssl = required

 

ssl_cert = </etc/pki/dovecot/Server1dovecot.pem

ssl_key = </etc/pki/dovecot/Server1dovecot.pem

************************************************************************

 

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

************************************************************************

disable_plaintext_auth = yes   (取消明文認證、只支持加密認證)

************************************************************************

 

# vim /etc/dovecot/conf.d/10-master.conf

************************************************************************

service imap-login {

  inet_listener imap {

    port = 0

  }

  inet_listener imaps {

    #port = 993

    #ssl = yes

  }

}

 

service pop3-login {

  inet_listener pop3 {

    port = 0

  }

  inet_listener pop3s {

    #port = 995

    #ssl = yes

  }

}

 

************************************************************************

 

3>處理額外的mail_location設置值

 

# vim /etc/dovecot/conf.d/10-mail.conf

*************************************************************************

mail_location = mbox:~/mail:INBOX=/var/mail/%u

*************************************************************************

 

3.MUA軟件客戶端的收發郵件軟件

1>Linux Mail(Linux系統自帶的郵件瀏覽軟件)

 

用mail直接編輯文字郵件與發送郵件

#mail [email protected]          (以小數點代表結束)

 

利用已經處理完畢的“純文本文檔”發送郵件

#mail  -s 'test'  [email protected] < /root/test

 

利用mail查閱郵件

讀信: 數字+Enter

顯示標題: h

回覆郵件: R

刪除郵件: d

存儲郵件到指定文件: s 數字 文件名

離開mail: q

#mail -f ~/test.txt 讀取存儲的郵件

以“添加附件”的方式寄信

#yum install sharutils -y

#uuencode /etc/hosts  attachfile|mail -s 'attach'   [email protected]

獲得附件:

先存儲信件,再用命令uudecode  attach -o jjfattach (用編譯器解碼後的文件是jjfattach)

2>跨平臺好用的軟件:Thunderbird(雷鳥)

下載地址:http://www.mozilla.org/thunderbird/download/?product=thunderbird-17.0.2&os=win&lang=zh-CN

 

 

 

垃圾郵件過濾機制

 

    用postgrey進行非正規Mail server的垃圾郵件過濾,若發信來源同一封信第一次寄來時,postgrey默認會過濾他,並且將來源地址記錄起來

 

,在約5分鐘後,若該郵件又傳來一次時,則該郵件會被收下來。

# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

# yum install db4 db4-utils db4-devel -y

# yum install perl perl-Net-DNS -y

# rpm -ivh rpmforge-release-0.5.2-2.el6.rf.i686.rpm

# yum install postgrey -y

# /etc/init.d/postgrey start

# netstat -anlp|grep postgrey

# vim /etc/postfix/main.cf

*********************************************************************************************

添加:

smtpd_recipient_restrictions =

        permit_mynetworks, #默認值,允許來自mynetworks設置值的來源

        reject_unknown_sender_domain,

        reject_unknown_recipient_domain,

        reject_unauth_destination, #拒絕不信任的目標

        check_policy_service unix:/var/spool/postfix/postgrey/socket

#以上幾個選項是有順序的!!

********************************************************************************************

 

# vim /etc/sysconfig/postgrey (手動建立)

********************************************************************************************

OPTIONS="--unix=/var/spool/postfix/postgrey/socket --delay=60"   #默認阻擋5分鐘,這裏修改默認阻擋1分鐘

********************************************************************************************

 

#vim /etc/postfix/postgrey_whitelist_clients (白名單的添加)

***************************************************

mail.dsa.qwq.com

www.dsjaig.ads.com

***************************************************

 

#vim /etc/postfix/main.cf (通過數據庫添加黑名單)

*******************************************************

smtpd_recipient_restrictions = 

permit_mynetworks,

        reject_unknown_sender_domain,

        reject_unknown_recipient_domain,

        reject_unauth_destination,

reject_rbl_client cbl.abuseat.org,

reject_rbl_client bl.spamcop.net,

reject_rbl_client cblless.anti-spam.org.cn,

reject_rbl_client sbl-xbl.spamhaus.org,

        check_policy_service unix:/var/spool/postfix/postgrey/socket

 

smtpd_client_restrictions =

check_client_access hash:/etc/postfix/access,

reject_rbl_client cbl.abuseat.org,

reject_rbl_client bl.spamcop.net,

reject_rbl_client cblless.anti-spam.org.cn,

reject_rbl_client sbl-xbl.spamhaus.org

 

smtpd_sender_restrictions =

reject_non_fqdn_sender,

reject_unknown_sender_domain

********************************************************

 

基礎的郵件過濾機制(標題、內容的過濾)

 

#vim /etc/postfix/main.cf

********************************************************

header_checks = regexp:/etc/postfix/header_checks

body_checks = regexp:/etc/postfix/body_checks #regexp表示“使用正規表示法”

*******************************************************

#touch /etc/postfix/header_checks

#touch /etc/postfix/body_checks

********************************************************

規則:

/規則/     操作     顯示在登錄文件裏面的信息

/^Subject:.*A funny game/ DISCARD  drop header deny

#將標題爲"A funnt game"的郵件丟棄、並顯示drop header deny

操作包括:REJECT、WARN、DISCARD

*********************************************************

#postmap -q - regexp:/etc/postfix/header_checks /etc/postfix/body_checks(檢查語法)

 

# /etc/init.d/postfix restart

# /etc/init.d/postgrey restart

 

 

防火牆的設置:

iptables -A INPUT -p TCP -i $EXTIF --dport  25 --sport 1024:65534 -j ACCEPT (SMTP協議需要使用port 25) 

iptables -A INPUT -p TCP -i $EXTIF --dport  993 --sport 1024:65534 -j ACCEPT (加密傳輸端口)

iptables -A INPUT -p TCP -i $EXTIF --dport  995 --sport 1024:65534 -j ACCEPT

iptables -A INPUT -p TCP -i $EXTIF --dport  110 --sport 1024:65534 -j ACCEPT (明文傳輸端口)

iptables -A INPUT -p TCP -i $EXTIF --dport  143 --sport 1024:65534 -j ACCEPT    

 

 

注:

1.上層DNS中MX標誌一定要設置正確,否則郵件將可能直接被MX服務器踢掉;

2.MUA的主要的功能就是收取郵件主機的電子郵件,以及提供用戶瀏覽與編寫郵件併發送郵件到郵件主機上;

3.MTA:即郵件發送代理人,接受來自客戶端和其它MTA的郵件(採用SMTP協議和port 25),之後再轉發到下一臺主機;

4.MDA:即郵件傳送代理人,分析由MTA所收到的郵件表頭或內容等數據,決定這些郵件的去向。MDA是MTA下面的一個小程序,實現MTA郵件轉發功能,並且還可以自動回覆和過濾垃圾郵件;

5.郵件發送步驟:

取得某臺MTA的使用權限——>用戶在MUA上編寫郵件後發送到MTA上——>如果該封郵件的目標是本地端MTA自己的帳號,那就會通過MDA將這封信送到自己的Mailbox中——>如果該封郵件的目標是其他的MTA,則開始中繼轉發(Relay)的流程,由MDA發送到其它的MTA主機,直至目標MTA主機接收後將該郵件放到正確的用戶郵箱中,等待用戶登錄讀取;

6.MRA:即郵件檢索代理,是一個郵件服務的組件(如:dovecot),提供POP3、IMAP通信協議進行郵件的接受,接收到本地的郵件主機;

7.MUA通過POP3協議連接到MRA的port 110,並且輸入賬號與密碼來取得認證與授權;MRA確認帳號密碼正確後,前往該用戶的Mailbox(/var/spool/mail/賬戶名稱)取得用戶的郵件併發送到用戶的MUA軟件上;當所有的郵件傳送完畢後,用戶的Mailbox內的數據將會被刪除!

8.郵件發送流程:

1>發信端與收信端兩臺主機間先經過握手(ehlo),此時發信端被記錄爲發信來源。通過握手後就可以進行郵件標題的傳送了;

2>收信端分析標題信息,若郵件的“Mail to:主機名”爲收信端主機,且該名稱符合mydestination的設置,則該郵件開始被接受到隊列,並進一步送到Mailbox當中;若不符合mydestination的設置,則終止連接且不進行郵件內容(body)的傳送;

3>若"Mail to:主機名"不是收信端本身,則開始進行中繼轉發(Relay)的分析;

4>轉發過程首先分析該郵件的來源是否符合信任的客戶端,若符合則開始接收郵件至隊列,並等待MDA將郵件再轉發出去,若不符合則繼續下一步;

5>分析郵件來源或目標是否符合relay_domains的設置,若符合則郵件將被接收至隊列,並等待MDA將郵件再轉發出去;

6>若這封郵件的標題數據都不符合上述的規範,則終止連接,並不會接收郵件的內容數據。

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