sybase的sysprocesses中的hostname显示不全_Linux中Postfix邮件认证配置(五)
Postfix+Dovecot+Sasl工作原理
1.A用戶使用MUA客戶端借助smtp協(xié)議登陸smtpd服務(wù)器,需要先進行用戶和密碼認證,而SMTPD服務(wù)器端支持sasl認證,例如有一個sasl客戶端,就會去連接SASL。當SASL接受到驗證請求時就會根據(jù)驗證方式去進行驗證,常用的有PAM,passwd等。驗證成功后就會返回給Smtpd服務(wù)器。而smtpd就會允許A用戶登陸發(fā)送郵件。
2.Smtpd服務(wù)器接受到郵件轉(zhuǎn)發(fā)請求后,查看郵件是本域的還是外部域的,如果是本域內(nèi)的用戶,就會開啟MDA進程并進行郵件投遞到用戶的郵箱。
3.B用戶使用MUA客戶端借助pop3協(xié)議登陸dovecot服務(wù)器,需要先進行用戶和密碼認證,而Dovecot服務(wù)器端本身就有sasl認證的功能,而根據(jù)設(shè)置的認證方式進行用戶和密碼的認證。認證成功之后用戶登錄,Dovecot就會用MDR工具去用戶郵箱中取回郵件并下載到用戶的客戶端本地進行查看。
Postfix+SASL進行用戶發(fā)郵件認證
通過驗證配置可以發(fā)現(xiàn),如果想發(fā)送郵件給外部(中繼郵件)基本配置只能在mynetwork規(guī)定的ip范圍內(nèi)使用。這個方式在現(xiàn)實中也是不可行的。互聯(lián)網(wǎng)上常用的方式是通過賬號的認證方式允許中繼郵件。但Postfix本身沒有認證功能所以只能借助于第三方認證組件SASL來實現(xiàn)。與Postfix配合較好的SASL有:dovecot-SASL和cyrus-SASL,以及courier-authlib這幾款組件。各有千秋,使用哪個根據(jù)實際選擇即可。
①確定cyrus-sasl已安裝
[root@localhost ~]# rpm -qa | grep ?cyrus-sasl cyrus-sasl-gssapi-2.1.23-13.el6_3.1.x86_64 cyrus-sasl-plain-2.1.23-13.el6_3.1.x86_64 cyrus-sasl-lib-2.1.23-13.el6_3.1.x86_64 cyrus-sasl-2.1.23-13.el6_3.1.x86_64 cyrus-sasl-md5-2.1.23-13.el6_3.1.x86_64 cyrus-sasl-devel-2.1.23-13.el6_3.1.x86_64
②確定Postfix支持sasl認證
[root@localhost ~]# postconf -a cyrus dovecot ?#默認支持cyrus和dovecot這兩種認證方式
③Postfix主配置添加以下內(nèi)容
[root@localhost ~]# vim /etc/postfix/main.cf ###################CYRUS-SASL################ broken_sasl_auth_clients = yes ?#定義是否支持像outlook、foxmail等非標準協(xié)議認證 smtpd_sasl_auth_enable = yes ?#開啟sasl驗證用戶功能 smtpd_sasl_local_domain = $myhostname ?#用于識別本地主機 smtpd_sasl_security_options = noanonymous ?#不支持匿名用戶 smtpd_sasl_path = smtpd ?#指定使用sasl的程序名 smtpd_banner = welcome to smtp.ywnds.com ?#定義telnet連接時顯示信息 smtpd_client_restrictions = permit_sasl_authenticated ?#用于限制客戶端連接服務(wù)器 smtpd_sasl_authenticated_header = yes ?#從頭信息查找用戶名 smtpd_sender_restrictions = permit_mynetworks,reject_sender_login_mismatch ?#定義發(fā)件人規(guī)則 smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated, reject_invalid_hostname,reject_unauth_destination ?#定義收件人規(guī)則 ?#permit_mynetworks:允許本地網(wǎng)絡(luò) ?#permit_sasl_authenticated:允許sasl認證過的用戶發(fā)送郵件 ?#reject_unauth_destination:拒絕沒有經(jīng)過認證的目標地址(這個一定要放在最后) ?#reject_invalid_hostname:HELO命令中的主機名稱無效時返回501 ?#reject_non_fqdn_hostname:HELO命令中的主機名稱不是FQDN形式則返回504 ?#reject_non_fqdn_recipient:收件地址不是FQDN則返回504 ?#reject_non_fqdn_sender:發(fā)件地址不是FQDN則返回504 ?#reject_unauth_pipelining:拒絕不守規(guī)定的流水線操作 ?#reject_unknown_client:DNS查不出客戶端IP的PTR記錄時拒絕 ?#reject_unknown_hostname:HELO命令中的主機名稱沒有A和MX記錄時拒絕 ?#reject_unknown_recipient_domain:收件人地址的網(wǎng)域部分查不出有效的A或MX記錄時拒絕 ?#reject_unknown_sender_domain:發(fā)件人地址的網(wǎng)域部分查不出有效的A或MX記錄時拒絕
④查看SASL支持哪些認證機制
[root@localhost ~]# saslauthd -v saslauthd 2.1.23 authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap
⑤Postfix開啟基于SASL用戶認證
這里介紹2種認證方式,saslauthd和auxprop,一個是使用系統(tǒng)的賬號來做認證,一個使用外部的賬戶來做認證,對于安全性來說,當然是使用外部的賬號更安全了,這里介紹的使用sasldb2數(shù)據(jù)庫,mysql的方式暫不介紹。2種方式人選其一即可。 Saslauthd [root@localhost ~]# vim /usr/lib64/sasl2/smtpd.conf pwcheck_method: saslauthd mech_list: PLAIN LOGIN #登錄方式 Auxprop [root@localhost ~]# vim /usr/lib64/sasl2/smtpd.conf pwcheck_method: auxprop auxprop_plugin: sasldb mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM #登錄方式
⑥SASL配置文件/etc/sysconfig/saslauthd
SASL只是個認證框架,實現(xiàn)認證的是認證模塊,而pam是sasl默認使用的認證模塊。如果使用shadow做認證的話直接修改就可以不需要做其他任何配置了。 Saslauthd [root@localhost ~]# vim /etc/sysconfig/saslauthd SOCKETDIR=/var/run/saslauthd #MECK= pam MECK = shadow Auxprop [root@localhost ~]# vi /etc/sysconfig/saslauthd #MECH= FLAGS=sasldb [root@localhost ~]# saslpasswd2 -c -u 'ywnds.com' redis ?#執(zhí)行之后輸入2次密碼就可以了 [root@localhost ~]# sasldblistusers2 ?#查看添加的用戶 [root@localhost ~]# saslpasswd2 -d redis@ywnds.com ?#刪除用戶 [root@localhost ~]# chown postfix:postfix /etc/sasldb2 [root@localhost ~]# chmod 640 /etc/sasldb2 ?#數(shù)據(jù)庫權(quán)限修改
⑦重啟服務(wù)
[root@localhost ~]# /usr/sbin/postfix reload [root@localhost ~]# service saslauthd restart [root@localhost ~]# chkconfig saslauthd on 測試賬號 [root@localhost ~]# testsaslauthd -u hadoop -p hadoop 0: OK “Success”
SMTP認證指令
Postfix內(nèi)部郵件過濾
除了在上面配置文件中使用的一些過濾指令外,管理員也可以使用訪問表(access map)來自定義限制條件,自定義訪問表的條件通常使用check_client_access, check_helo_access, check_sender_access, check_recipient_access進行,它們后面通常跟上type:mapname格式的訪問表類型和名稱。其中,check_sender_access和check_recipient_access用來檢查客戶端提供的郵件地址,因此,其訪問表中可以使用完整的郵件地址,如admin@magedu.com;也可以只使用域名,如magedu.com;還可以只有用戶名的部分,如marion@
案例
1.這里以禁止172.16.100.66這臺主機通過工作在172.16.100.1上的postfix服務(wù)發(fā)送郵件為例演示說明其實現(xiàn)過程。訪問表使用hash的格式
(1)首先編輯/etc/postfix/access文件,以之做為客戶端檢查的控制文件,在里面定義如下一行: 172.16.100.66 ? ? ? ? ?REJECT (2)將此文件轉(zhuǎn)換為hash格式產(chǎn)生一個access.db文件 postmap /etc/postfix/access (3)配置postfix使用此文件對客戶端進行檢查編輯/etc/postfix/main.cf文件添加如下參數(shù): smtpd_client_restrictions = check_client_access hash:/etc/postfix/access (4)讓postfix重新載入配置文件即可進行發(fā)信控制的效果測試了
2.這里以禁止通過本服務(wù)器向microsoft.com域發(fā)送郵件為例演示其實現(xiàn)過程訪問表使用hash的格式
(1)首先建立/etc/postfix/denydstdomains文件(文件名任取)在里面定義如下一行: microsoft.com ? ? ? ? ?REJECT (2)將此文件轉(zhuǎn)換為hash格式 postmap /etc/postfix/denydstdomains (3)配置postfix使用此文件對客戶端進行檢查編輯/etc/postfix/main.cf文件添加如下參數(shù): smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/denydstdomains, permit_mynetworks, reject_unauth_destination (4)讓postfix重新載入配置文件即可進行發(fā)信控制的效果測試了
讓您學(xué)習到的每一節(jié)課都有所收獲《Linux就該這么學(xué)》是一本由資深運維專家劉遄老師及國內(nèi)多名紅帽架構(gòu)師(RHCA)基于最新RHEL7系統(tǒng)共同編寫的高質(zhì)量Linux技術(shù)自學(xué)教程,極其適合用于Linux技術(shù)入門教程或講課輔助教材。榮獲雙11、雙12購物狂歡節(jié)IT品類書籍銷量冠軍,2017年、2018年國內(nèi)讀者增速最快的技術(shù)書籍,您可以在京東、當當、亞馬遜及天貓搜索書名后購買,亦可加劉遄老師微信交流學(xué)習(手指按住下圖3秒鐘即可自動掃描)~
劉遄老師QQ:5604215
??Linux技術(shù)交流群:560843(新群,火熱加群中……)
??官方站點:www.linuxprobe.com
? 書籍在線學(xué)習(電腦在線閱讀效果更佳):
http://www.linuxprobe.com/chapter-00.html
《Linux就該這么學(xué)》是一本基于最新Linux系統(tǒng)編寫,面向零基礎(chǔ)讀者的技術(shù)書籍。從Linux基礎(chǔ)知識講起,然后漸進式地提高內(nèi)容難度,詳細講解Linux系統(tǒng)中各種服務(wù)的工作原理和配置方式,以匹配真實生產(chǎn)環(huán)境對運維人員的要求,突顯內(nèi)容的實用性。想要學(xué)習Linux系統(tǒng)的讀者可以點擊按鈕了解這本書,同時這本書也適合專業(yè)的運維人員閱讀,作為一本非常有參考價值的工具書!
總結(jié)
以上是生活随笔為你收集整理的sybase的sysprocesses中的hostname显示不全_Linux中Postfix邮件认证配置(五)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python注入_Python如何考虑代
- 下一篇: python补课费用_学习python阶