主題: 分享『只允許學校 e-mail 註冊的方法』 作者: u882061 於 一月 03, 2009, 07:25:31 下午 本伺服器的用途:部落格(lifetype、wordpress)、電子相簿(gallery2)、線上教學(Moodle)
狀況: 由於學校的使用者有數百人,大家都各自找時間註冊,因此小弟也不敢關閉註冊,如此一來,其他雜七雜八的人也可能混入,並且註冊成功... 為此,小弟有架起 LDAP,可惜並非伺服器內每種系統都有支援 LDAP,唉~LDAP就白架了... 於是從lifetype論壇中,發現有其他老師寫的 泡泡註冊網頁,挺不錯用的,可惜只支援 lifetype... 無奈,小弟只好另闢蹊徑了 思路: lifetype、wordpress、gallery2、Moodle 都具備發註冊啟用信的功能,使用者收到,並啟用,方能成功開啟服務;管理者若能在註冊時把關,非學校 e-mail 就收不到註冊啟用信,則是不錯的方法! 可是如此一來,得去每個系統寫過濾 e-mail 程式也很麻煩,乾脆在 SMTP 的送信出口,統一做個過濾,比較簡易可行,註冊者將因為非學校信箱,而收不到註冊信,也就無法啟用部落格。 限制: 1.必須是 Linux 伺服器。 2.最好以 Postfix 作 SMTP 服務(sendmail 理論也可以,但小弟實做時失敗)。 vi /etc/postfix/main.cf 拿掉下面這一行,前面的井字號 # #header_checks = regexp:/etc/postfix/header_checks service postfix restart vi /etc/postfix/header_checks 在最下方訂定規則,除了學校 e-mail 以外,其他都拿掉,扔到垃圾桶,並在 /var/log/maillog 內註記drop header deny /^TO:.*@abcd.kh.edu.tw/ ACCEPT /^TO:.*@mail.abcd.kh.edu.tw/ ACCEPT /^TO:.*@ms2.abcd.kh.edu.tw/ ACCEPT /^TO: .*/ DISCARD drop header deny 到此為止,已經搞定, 但最好提醒註冊們者必須填寫學校的信箱,才能收到啟用信。 vi /blog/locale/admin/locale_zh_TW.php $messages['email_help'] = '請務必填寫學校的信箱,如此,才能收到啟用部落格的通知信。'; 小缺點:註冊者若是使用其他的信箱,在註冊過程中,Lifetype依然會顯示註冊成功,但小弟已在 SMTP動手腳,所以,非學校使用者的註冊成功,是個假象,因為他收不到啟用信了 :-P。 此外,這種設設定方式是針對到這台伺服器中,收發信全部作過濾,若使用者有其它需求,較不適合此法。 |