首先,在作實驗以前,你應當明確
發送給郵件服務器(經過25端口) MTA將郵件存在Mailbox中去。(sasl/TLS)
MUA ------------------------->MTA------------------------>mailbox
| | |
| | |
| | |
dovecot-----------------------mysql--------------------------->
解析: 首先MUA 是客戶端。他能夠發送郵件,服務器經過25端口接受客戶端發送來的郵件,放到mailbox中(郵件服務器,全部用戶的郵件都存放在此)在此MUA向服務 其發送郵件的過程當中,能夠加上sasl驗證,就是你發送郵件的時候給你個驗證,看你是否被容許往服務器上存郵件,而TLS是指的在發送的過程當中對郵件採用 TLS加密。
假若你客戶端接收郵件的時候,你經過dovecot來接收郵件,你經過配置dovecot來接收,dovecot經過110 143 993 995這幾個端口來接收,這幾個端口中。110 143是加密的,993 995 是不加密的。首先先去myql數據庫中查詢與你身份符合的郵件,或者能夠說目的地是你的郵件,而後能夠經過加密去mailbox去取屬於本身的郵件。
還有一種接收郵件的方式:
80
webmail------->http---------->extmail
443(加密的https)
webmail能夠經過http接收郵件,經過80端口接收的是沒有加密的郵件,經過443接收的是加密的方式接收,須要驗證身份。
實驗一:
smtp是用來發郵件的:
作sasl的時候記得服務器上運行: postconf -a 有顯示: cyrus dovecot的時候你才能夠作。
(1)yum list cyrus*
yum install cyrus-sasl.x86_64 cyrus-sasl-sql-2.1.23-8.el6.x86_64 -y
yum install cyrus-sasl-plain.x86_64 cyrus-sasl-sql.x86_64 -y
(2) postconf -d | grep smtpd_sasl
postconf -e smtpd_sasl_auth_enable=yes
postconf -e smtpd_sasl_authenticated_header=yes
postconf e smtpd_sasl_type=cyrus
postconf e smtpd_sasl_path=smtpd
postconf -e "smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks,reject_unauth_destination"
(3)cd ~
cd /pub/docs/postfix
get postfix-2.8.5.tar.gz(或者去www.postfix.org網站去下載,注意你搭建服務器的時候要下穩定版,你作測試的話能夠下那種實驗的版本)
tar zxf postfix-2.8.5.tar.gz
cd postfix-2.8.5/README_FILES
less SASL_README能夠查看幫助文檔信息(裏面會有如何在/usr/lib64/sasl2中創建的文檔及內容)
(4) cp /etc/sasl2/smtpd.conf /usr/lib64/sasl2
vi /usr/lib64/sasl2/smtpd.conf
mysql
- pwcheck_method: auxprop
- auxprop_plugin: sql
- mech_list: PLAIN LOGIN (大小寫都同樣的)
- sql_engine: mysql
- sql_hostnames: 127.0.0.1
- sql_user: extmail
- sql_passwd: extmail
- sql_database: extmail
- sql_statement: SELECT password FROM mailbox WHERE username = '%u@%r'
- sql_verbose: yes
(注意@是一個特殊的符號,你或的密碼的時候前面要加 \) ( 5) postfix reload /etc/init.d/postfix restart perl -MMIME::Base64 -e 'print encode_base64 ("\0postmaster\@extmail.org\0sushan");'
出現相似: AHd4aEBleHRtYWlsLm9yZwB3ZXBN0BSM= 測試: telnet localhost 25
ehlo localhost(出現250-AUTH PLAIN LOGIN表示明文密碼登陸) auth plain AHBvc3RtYXN0ZXJAZXh0bWFpbC5vcmcAc3VzaGFu 若出現 successful 說明你設置的成功了。 這樣你用thunderbird作測試: 添加用戶: ADD Mail Account
username: postmaster
Email Address: postmaster@extmail.org
password: sushan(你在init.sql中導入的密碼) 建立賬號成功。 在 postmaster@extmail.org中點擊右鍵:setting 而後在Server Setting:設置: Server Name:192.168.0.139 User Name : postmaster@extmail.org Connection security: SSL/TLS OK 在Outgoing Server(SMTP)中設置: 編輯:Server Name: 192.168.0.139 Connection security: None user name : postmaster@extmail.org OK (outing是配置的發送郵件的一端,Server Setting中設置的是爲接收郵件作準備的) 而後你能夠測試 sendmail(在你發送的時候可能須要你輸入密碼認證) getmail 實驗二: 步驟(1)cd /var/spool/postfix/private
ll auth(沒有該文件或目錄)
cd /etc/dovecot/conf.d/
vi 10-master.conf
- unix_listener /var/spool/postfix/private/auth{
- mode = 0666
- user = postfix
- group = postfix
- }
(2)/etc/init.d/dovecot restart
ll auth (3) postconf -e smtpd_sasl_path=private/auth
postconf -e smtpd_sasl_type=dovecot
postconf -e smtpd_tls_received_header=yes
postconf -e smtpd_tls_security_level=may
postconf -e smtpd_tls_cert_file=/etc/postfix/mail.pem
postconf -e "smtpd_recipient_restrictions = permit_sasl_authenticated,permit_tls_clientcerts, permit_mynetworks,reject_unauth_destination"
postconf -e smtpd_tls_session_cache_database=btree:/var/lib/postfix/smtpd_scache (4) cd /etc/pki/tls/certs
make mail.pem
mv mail.pem /etc/postfix/ 測試: telnet localhost 25 ehlo localhost 能夠看到 250-STARTTLS說明你設置成功。 而後在Server Setting:設置: Server Name:192.168.0.139 User Name : postmaster@extmail.org Connection security: SSL/TLS OK 在Outgoing Server(SMTP)中設置: 編輯:Server Name: 192.168.0.139 Connection security: STARTTLS user name : postmaster@extmail.org OK 用:sendmail getmail測試 實驗三: 反垃圾郵件的處理。 www.ccert.edu.cn 計算機網緊急相應組(犯垃圾郵件系統) 有一箇中國反垃圾郵件聯盟。在裏面有一些黑名單,以及一些白名單。你本身能夠申請加入百白名單。 步驟(1) wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf CCERT每週更新一次規則集和相應的分數,更新使用CCERT犯垃圾郵件服務在6個月內處理過的垃圾郵件爲樣本,Chinese_rules.cf會使過濾效果更好。 service spamassassin start (2)cd ~ lftp 192.168.0.254
cd /pub/docs/postfix
get fp-linux-i386-ws.tar.gz
tar zxf fp-linux-i386-ws.tar.gz
cd f-prot cd ..
mv f-prot/ /usr/local/
cd /usr/local/f-prot
ll antivir.def
du -sh antivir.def 顯示:45M cd /mnt lftp 192.168.0.254 cd /pub/docs/postfix
get antivir.def
mv antivir.def /usr/local/f-prot
cd /usr/local/f-prot
ll antivir.def
du -sh antivir.def 顯示:58M /usr/local/f-prot/install-f-prot.pl ./fpupdate (安裝過程當中有可能出現缺乏動態鏈接庫 /lib/ld-linux.so.2 yum install /lib/ld-linux.so.2 -y) (3)cd /var/www/extsuite/extmail fpscan /root/(掃描根文件發現沒有病毒) lftp 192.168.0.254 cd /pub/docs/postfix get MailScanner-4.84.3-1.rpm.tar.gz (或者去www.mailscanner.info去下載) tar zxf MailScanner-4.84.3-1.rpm.tar.gz cd MailScanner-4.84.3-1 ls(能夠看到該文件下面全市sec源碼文件) yum install rpm-build (用於生成rpm包。) ./install.sh(在你安裝gcc以後,該腳本很厲害的。能夠檢測到缺乏的問家,而且給你安裝上) (4) mkdir /var/spool/MailScanner/spamassassin;
chown postfix.postfix /var/spool/MailScanner/* vi /etc/MailScanner/MailScanner.conf
- Run As User = postfix
- Run As Group = postfix
- Incoming Queue Dir = /var/spool/postfix/hold
- Outgoing Queue Dir = /var/spool/postfix/incoming
- MTA = postfix
- Virus Scanners = fprot
- Always Include Spamassassin report = yes
- Use Spamassassin = yes
- SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin
(5)echo /^Received:/ HOLD >>/etc/postfix/header_checks ll /etc/postfix/header_checks postmap /etc/postfix/header_checks (make sure uncomment header_checks in /etc/postfix/main.cf) (6) postfix stop
chkconfig postfix off
service MailScanner start(MailScanner啓動以後postfix會自動起來的) chkconfig MailScanner on (7) Virus test(病毒測試) Download 「eicar.com」 from http://www.eicar.org/anti_virus_
test_file.htm
b) mail test include 「eicar.com」.
或者用thunderbild來發送和接收郵件。
發送的時候添加附加病毒。 send
get mail 此時你能夠看獲得你發送的病毒附件被刪除了,而後系統會給你發送2份郵件, 一份是你自己的郵件除去病毒。另外一份是發送給你的警告信息,告訴你原本的郵件內含有 病毒。