發表文章

目前顯示的是有「電子郵件管理」標籤的文章

SpamAssassin 之SMTP AUTH略過檢查

圖片
最近自己開始在公司外面使用公司的郵件主機寄收信,才發現寄信時雖然有使用帳號密碼認證(SMTP AUTH)。可是主機的檢查垃圾信軟體(SpamAssassin)仍會對信件進行檢查,而且因為在外面的網路都是動態取得ip, 大部份ip都已經被列入寄垃圾的黑名單網域中。所以我寄出的信,都被自己公司的主機標記為垃圾信!雖然試著寄往MSN及GMAIL都還是收得到,但是都被加註,總覺得很不妥當。所以試著調整。原本以為在SpamAssassin的設定檔中有可以設定的選項,結果沒找到。 後來升級軟體時(FreeBSD下使用portupgrade -a指令),發現SpamAssassin套件出現編譯選項,其中第一個選項就是如果通過SMTP AUTH認證,則略過檢查。將其選取後,往下升級,系統重開後,再做測試,就發現成功了。在公司外部,只要通過帳號密碼認證,就不會被認為是垃圾信,而且成功的寄出。 再去/var/log/maillog查看, 發覺其實還是有經過SpamAssassin的檢查, 只是score都變成-90幾的狀態。我想應該是有成功認證的都會把score都-100吧! 這樣即使IP被列在DNSBL的黑名單中, score也不容易大於零, 自然不會被認為是垃圾信。

FreeBSD設定TLS for sendmail

前文提到SASL, 設定使用SMTP AUTH機制, 由於Outlook使用的驗證是LOGIN, 為明文傳送帳號密碼(其實是使用Base64編碼), 並不安全! 所以, 我們要另外再加上安全通道(TLS) 在FreeBSD上的設定步驟也很少: 1. 取得根憑證, 用於TLS加密的憑證及私密金鑰(共3個檔) 2. 設定sendmail.mc, 加入對TLS的設定 -------------------------------- 我參閱 MyChat數位男女 的文件來實作, 在很短的時間內就做好了。筆記如下: 1. 憑證可以買商用的, 也可以自己做。商用的好處是, 它預先把根憑證安裝在各種電腦作業系統中, 所以使用者不用安裝根憑證, 但是商用憑證要付錢, 而且憑證有期限, 也就是要一直付錢。相反地, 自己做憑證的好處就是不用付錢, 但要自己下點功夫, 學習如何做憑證, 而且使用者也要安裝我們做的根憑證。 自己做憑證的步驟: (因為openssl已裝好, 所以不用安裝, 只要設定即可) # mkdir /usr/local/CA # cd /usr/local/CA # mkdir certs crl newcerts private # echo "01" > serial # cp /dev/null index.txt # cp /etc/ssl/openssl.cnf openssl.cnf 修改openssl.cnf檔案,將檔案中的第38行的路徑由./demoCA改成/usr/local/CA 再下以下指令, 先做一個根憑證(cacert.pem)出來 # openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem -days 365 -config openssl.cnf 根憑證也是有期限的, 在這裡使用-days 365來設定期限為一年, 如果要正式使用, 請考量使用長一點的期限吧! 時間過得很快的。 指令下完, 會出現如下訊息, 請依說明填入, 主要要記得第一個填入的PEM pass phrase, 這是用來保密根憑證私鑰的密碼(後面會用到), 其他的部份請依畫面說明填入, 如果忘了也沒關係, 可以檢視憑證內容來取得...

FreeBSD設定SASL for Sendmail

最近想要開放Mobile User可以使用SMTP AUTH的機制來寄信, 所以四處研究了一下, 發覺要做的設定很少, 筆記如下: 1. 在FreeBSD 7.0, 使用ports安裝sendmail-sasl 2. 修改/usr/local/etc/rc.d/saslauthd 將saslauthd改名成saslauthd.sh(或複製) # cp /usr/local/etc/rc.d/saslauthd /usr/local/etc/rc.d/saslauthd.sh # vi /usr/local/etc/rc.d/saslauthd.sh 找到 saslauthd_enable=${saslauthd_enable:-"NO"} 這一行, 將"NO"改成"YES" 這時候要決定使用使用什麼方法來驗證使用者: a. 使用這台FreeBSD的帳號密碼, 那麼現有的設定就可以了 b. 使用另一台主機的帳號密碼, 那麼要將下一行 saslauthd_flags=${saslauthd_flags:-"-a pam"}做一點修改(下一段再談) 3. 調整Sendmail的設定檔, 預設就有幾個驗證機制可以使用(DIGEST-MD5, CRAM-MD5), 但是因為現有Client端軟體, 如Outlook, 只支援LOGIN等驗證機制, 所以Sendmail要調整一下: a. 增加驗證機制 define(`confAUTH_MECHANISMS',`CRAM-MD5 DIGEST-MD5 LOGIN PLAIN') b. 設定若通過驗證, 則代轉信(relay) TRUST_AUTH_MECH(`CRAM-MD5 DIGEST-MD5 LOGIN PLAIN') # cd /usr/local/share/sendmail/cf/cf # vi sendmail.mc 如上所提, 加入那兩行 # ./Build sendmail.cf # ./Build install-cf 4. 重開Sendmail, 就可以了 # cd /usr/local/etc/rc.d # ./sendmail.sh restar...

ClamAV的設定檔

clamav 0.95這個版本的啟動參數有一些改變, 原本的設定檔似乎也有些改變, 所以當你由之前的版本升級至0.95版時, 會發現ClamAV無法啟動。 也不用害怕, 只要稍做調整, 就可以了: 1. 至/usr/local/etc/rc.d目錄, 可以看到clamav-clamd, clamav-milter這兩個檔, 可以注意一下其日期為升級之後的日期, 請把其檔名加上.sh, 原本的.sh檔則改為.sh.old。 2. 至/etc/rc.conf檔, 找到clamav-milter-flags那一行, 將其remark掉(行首加#) 3. vi /usr/local/etc/clamd.conf, 找到LocalSocket那行, 注意設定的檔名/var/run/clamav/clamd.sock應該跟clamav-milter.sh裡設定的socket檔名一致。 基本上, 這樣就可以了。不過, 當你打開ClamAV時, 會注意到log檔, 只會出現Fd[x]:OK, 並不會出現ClamAV較詳細的訊息, 此時可以到其設定檔/usr/local/etc/clamav-milter.conf裡, 找到AddHeader Yes那行, 把前面的#拿掉即可。這樣, 做測試信的時候, 也可以看到標頭裡, 會出現ClamAV Scan過的訊息。

我的公開著作之"終結垃圾郵件"Word檔

好久沒寫網誌了, 只忙著工作, 也沒什麼新鮮事可以記錄的! 但是發現微軟的MSN(Windows Live)多了許多功能, 特別是SkyDrive容量超大的(25GB), 就想把一些文章分享在上面。以前用網誌來分享的最大問題, 就是不能使用習慣的文書軟體(Word), 必須花很多時間重覆的編輯! 現在使用SkyDrive, 就容易多了, 只要把Word檔, 直接傳上去就可以了。只是要看的人, 必須有能打開Word檔的軟體就是了。 以下先把前年的文章: "終結垃圾郵件"放上去 http://cid-9573800d5b9f9d9a.skydrive.live.com/browse.aspx/%e5%85%ac%e9%96%8b

SpamAssassin的設定檔

1. 啟動Spamass-milter的文件在: /usr/local/share/doc/spamass-milter/activation.txt 2. 由文件中可以看到SpamAssassin的設定檔在: /usr/local/etc/mail/spamassassin/local.cf 3. 使用手冊: #man Mail::SpamAssassin::Conf 4. 重要設定: spamassassin ImportantInitial ConfigItems

設定Sendmail為SMTP AUTH的Client 

為了使公司內的同仁在寄信時有個驗證的過程, 以避免有人使用別人的帳號來寄信! 所以我們將郵件主機(Domino)的SMTP驗證打開。 但這樣外部的信件也就無法寄到我們的郵件主機了, 因為外部的信件其實是先到我們的郵件匣道主機, 所以想到將匣道主機的Sendmail設定成在碰到SMTP AUTH時, 使用一組帳號密碼進行驗證的動作, 就可以將外部信件給寄進來了。 在網路上找到方法: http://www.sendmail.org/~ca/email/auth.html Using sendmail as a client with AUTH 1. 在/etc/mail目錄下, 新增一子目錄auth 2. 在auth子目錄下, 新增一檔案client-info 3. 檔案內容:   AuthInfo:your.isp.net "U:root" "I:user" "P:password" 4. 如同access檔案, 必須轉成db檔,    # makemap hash client-info < client-info 5. 在sendmail.mc中加入一行設定來使用此client-info.db檔   FEATURE(`authinfo',`hash /etc/mail/auth/client-info')dnl 6. 將sendmail.mc 轉成 sendmail.cf   # m4 ../m4/cf.m4 sendmail.mc > sendmail.cf 7. sendmail restart

Fall Back MX

Sendmail的mc設定檔有一個Fallback MX Server功能可以設定: dnl set fallback MX server define(`confFALLBACK_MX',`mail1.abc.com') 當這台Sendmail無法把信寄出去時, 它會丟給設定好的fallback mx server, 這樣可以做到部份的備援效果! 例如我們有A主機及B主機, 當A主機的線路故障時, 如果它有設定fallback mx server為B主機, 則A主機會把信都轉寄給B主機, 請B主機代為寄送。如果B主機功能及線路正常, 那麼信件就可以正常寄出去。 使用sendmail -bt來查看設定情形: (沒有設定fallback mx主機) mail1# sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter > /mx hinet.net getmxrr(hinet.net) returns 1 value(s): netnews.hinet.net. (設定fallback mx主機) mail1# sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter > /mx hinet.net getmxrr(hinet.net) returns 2 value(s): netnews.hinet.net. mail1.abc.com.

Domino主機Fault Restart

最近發現我們Domino主機(6.0.3版/AIX)不定時的發生因為Fault而自動重開的現象, 因為主機會自動寄信通知我們管理員, 所以一定會知道有這個情形, 有時候重開後系統行為就很正常, 但有時候, 重開後系統就不太正常! 至少在重開時, 那五分鐘的時間內, 使用者會覺得不能寄信或收信! 主機寄來的通知信內容如下: Fault Recovery Notification: Server s02/Princo was restarted after a fault on 02/13/2007 08:28:41 一開始我在Domino管理員界面的log裡找問題, 結果出事的那段時間就是沒有log! 後來在AIX的目錄下(/server1)找到log檔, 如下: -rw-r--r-- 1 notes notes 755783 Feb 13 08:34 dcntrlr02130000.log 這個檔的內容就有出事時的log, 如下: 02/13/2007 08:28:34 SMTP Server: 10.1.10.122 disconnected. 1 message[s] received 02/13/2007 08:28:36 SMTP Server: 10.1.32.2 connected 02/13/2007 08:28:39 SMTP Server: Message 00029EDA (MessageID: ) received 02/13/2007 08:28:39 SMTP Server: 10.1.32.2 disconnected. 1 message[s] received Stack base = 0x2ff21840, Stack size = 124168 bytes Fatal Error signal = 0x0000000b PID/TID/K-TID = 13994/1/18887 Tue Feb 13 08:28:41 Fault recovery is in progress Tue Feb 13 08:28:41 Running NSD NSD is in progress ................. Tue Feb 13 08:33:59 Terminating tasks Tue Feb 13 08:34:01 Fr...

終結垃圾郵件(七) 監控軟體補充

圖片
補充: 文章中提到可以使用MRTG來監看系統中的各種狀態, 不過要先安裝SNMP,還要設定,還要安裝Apache, 再去設定MRTG的一些東西, 最後得到的畫面雖然是圖型式的, 還算專業! 可是實在太累人! 最近在網路上看到一套軟體, 可以監看各種主機包括FreeBSD, 畫面也不錯!叫做Applications Manager 7, 可以在Google上打"FreeBSD System Monitor"就可以找到! 安裝後只要新增Monitor, 輸入主機的名稱, 設定SNMP的Community Name就可以連上了, 當然在之前要在FreeBSD主機上面安裝SNMP, 設定並測試, 這部份是一定要做的。 可是完成之後, 就可以很輕易的在Applications Manager 7的界面操作,監看系統的各種情形。 Applications Manager 7的免費版本可以監看5台主機, 這對大部份人來說不是問題; 以FreeBSD擋信主機來說, 我們可以把各種要用到的Process列入監看, 而且可以看到歷史資料, 例如每個小時的記憶體使用量, 還可以設定用量超過多少時要通知我們。這樣對系統的使用情形可以有很好的掌握。

終結垃圾郵件(六) spamassassin設定補充

補充: 在之前的文章中提到,似乎Spamassassin的自我學習功能有問題!因為我在log中看到這樣的訊息: Jan 31 08:42:52 fb2 spamd[11584]: spamd: connection from localhost.princo.com.tw [127.0.0.1] at port 52169 Jan 31 08:42:52 fb2 spamd[11584]: spamd: creating default_prefs: /root/.spamassassin/user_prefs Jan 31 08:42:52 fb2 spamd[11584]: config: cannot write to /root/.spamassassin/user_prefs: Permission denied Jan 31 08:42:52 fb2 spamd[11584]: spamd: failed to create readable default_prefs: /root/.spamassassin/user_prefs 其實應該只是檔案系統的設定要稍加修正即可! 因為/root目錄下並沒有.spamassassin目錄存在, 所以我們先建立該目錄, 而且spamassassin使用spamd這個帳戶來存取該目錄, 所以使用chmod指令改變其權限, 這樣spamassassin就可以在這個目錄下建立它所需要的檔案了。 # cd /root # mkdir .spamassassin # chmod 774 .spamassassin # cd .spamassassin # ll total 54 -rw------- 1 spamd wheel 16384 Jan 31 08:48 auto-whitelist -rw------- 1 spamd wheel 6 Jan 31 08:48 auto-whitelist.mutex -rw------- 1 spamd wheel 6 Jan 31 08:47 bayes.mutex -rw------- 1 spamd wheel 16384 Jan 31 08:47 bayes_seen -rw------- 1 spamd whee...

終結垃圾郵件(五) : 補充sa-stats.pl在瀏覽器執行

補充: sa-stats.pl 的執行在FreeBSD上沒問題, 我們也都看得到執行結果; 但是我也提到為什麼把這個perl script放在/usr/local/www/apache22/cgi-bin目錄下的原因, 就是為了想從瀏覽器直接執行! 這個方式真得是很方便, 可惜的是直接在網址打http://server/cgi-bin/sa-stats.pl, 會看到下面的結果: Time Spent Running SA: 0.00 hours Time Spent Processing Spam: 0.00 hours Time Spent Processing Ham: 0.00 hours TOP SPAM RULES FIRED ---------------------------------------------------------------------- RANK RULE NAME COUNT %OFMAIL %OFSPAM %OFHAM ---------------------------------------------------------------------- ---------------------------------------------------------------------- TOP HAM RULES FIRED ---------------------------------------------------------------------- RANK RULE NAME COUNT %OFMAIL %OFSPAM %OFHAM ---------------------------------------------------------------------- ---------------------------------------------------------------------- 奇怪! 之前在主機上執行, 不是很正常的嗎? 為什麼現在資料的部份都沒有出現呢? 原因應該是因為我們在主機上執行時都是使用root權限, 可是透過Apache...

終結垃圾郵件(四)

統計分析垃圾信 1. spamstats 直接使用ports安裝 # whereis spamstats spamstats: /usr/ports/mail/spamstats # cd /usr/ports/mail/spamstats # make install clean …… # spamstats.pl -number 5 File /var/log/maillog : from Mar 31 00:00:00 to Mar 31 19:20:40 Total number of emails processed by the spam filter : 406 Number of spams : 186 ( 45.81%) Number of clean messages : 220 ( 54.19%) Average message analysis time : 6.26 seconds Average spam analysis time : 6.53 seconds Average clean message analysis time : 6.02 seconds Average message score : 8.18 Average spam score : 16.72 Average clean message score : 0.33 Total spam volume : 4265 kbytes Total clean volume : 10 Mbytes Recipients with highest number of spams : (top 5) 11 spams : liyu@mail.abc.com.tw 9 spams : karent@mail.abc.com.tw...

終結垃圾郵件(三)

防毒 1. ClamAV ibm-fb60# cd /usr/ports/security/clamav ibm-fb60# make install clean 要勾選MILTER選項 到 /etc/rc.conf, 加入 clamav_freshclam_enable="YES" clamav_clamd_enable="YES" clamav_milter_enable="YES" clamav_milter_flags="--quiet --local --outgoing --timeout=0 --max-children=50" 接著, 可以先檢查一下相關的設定檔: /usr/local/etc/clamd.conf /usr/local/etc/freshclam.conf 如果不存在, 則由其.sample複製; 使用vi編輯, 並依其說明修改設定! # cd /usr/local/etc/rc.d # ./clamav-freshclam.sh start # ./clamav-clamd.sh start # ./clamav-milter.sh start 可能出現檔案權限錯誤, 則先修改一下 # chmod g+w /var/log/clamav/clamd.log 若出現和Sendmail設定不符的錯誤, 則先去修改Sendmail的設定(如下) 修改Sendmail設定 # cd /usr/local/share/sendmail/cf/cf # vi sendmail.mc 加入以下一行 INPUT_MAIL_FILTER(`clmilter',`S=local:/var/run/clamav/clmilter.sock,F=,T=S:4m;R:4m') # m4 ../m4/cf.m4 sendmail.mc > sendmail.cf 備份/etc/mail/sendmail.cf # cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.back 將設定放到預設位置 # cp sendmail.cf /etc/mail/sendmail.cf 重開Sendmail, 以檢查ClamAV安裝...

終結垃圾郵件(二)

5. 設定Sendmail A. 先找到設定檔的目錄 /usr/local/share/sendmail/cf/cf B. 將/etc/mail/freebsd.mc拷貝至設定檔的目錄 C. 編輯該檔 ibm-fb60# cd /usr/local/share/sendmail/cf/cf ibm-fb60# cp /etc/mail/freebsd.mc sendmail.mc ibm-fb60# vi sendmail.mc …… D. 設定只relay host dnl Relay Mail for Individual Hosts FEATURE(relay_hosts_only) E. 設定ORDB FEATURE(dnsbl, `relays.ordb.org', `"550 Mail from " $&{client_addr} " rejected, see http://www.ordb.org/faq/\#why_rejected"')dnl F. 設定DDoS dnl Denying Dos Attacks dnl Accept up to 10 connections per second define(`confCONNECTION_RATE_THROTTLE', `10') dnl Allow no more than 200 concurrent connections define(`confMAX_DAEMON_CHILDREN', `200') G. 設定不轉送至程式 dnl Disabling Delivery to Programs and files MODIFY_MAILER_FLAGS(`LOCAL',`-') MODIFY_MAILER_FLAGS(`LOCAL',`-/') H. 設定GreyList的連結 dnl Add milter-greylist INPUT_MAIL_FILTER(`milter-greylist',`S=unix:/var/milter-greylist/milter-greylist.sock, T=S:5m;R:5m;C:1m;E:1m') I...

終結垃圾郵件:文章已於電子情報雜誌2007/1刊出

"終結垃圾郵件-開放源碼界的解決方案", 電子情報, 2007/1, pp.233-266. 感謝電子情報雜誌刊出我的作品, 這篇文章提供大家一個如何架設免費的垃圾郵件過濾主機的方法, 並討論一些相關的議題, 對於企業郵件主機的管理人應該相當實用! 歡迎大家多加參考! 以下先節錄片段, 完整文章請先到本期電子情報雜誌參閱! 1. 安裝FreeBSD A. 由網頁www.tw.freebsd.org 下載ISO image檔(CD1) B. 由光碟開機, 進入安裝程序 2. 取得Ports, 並利用Cvsup更新Ports A. ftp ftp.tw.freebsd.org B. cd /pub/ports/ports/ C. 取得ports.tar.gz D. 解壓縮, 得到ports目錄 E. 安裝Cvsup F. 編輯ports-supfile設定檔, 將CVSup 伺服器設為 cvsup.tw.freebsd.org,這一台伺服器是由交大資工所維護 G. 開始更新 ibm-fb60# ftp ftp.tw.freebsd.org Connected to freebsd.csie.nctu.edu.tw. 220---------- Welcome to Pure-FTPd [TLS] ---------- 220-You are user number 40 of 1000 allowed. 220-Local time is now 09:00. Server port: 21. 220-Only anonymous FTP is allowed here 220-IPv6 connections are also welcome on this server. 220 You will be disconnected after 15 minutes of inactivity. Name (ftp.tw.freebsd.org:ops): anonymous 331 Any password will work Password: 230 Any password w...