本伺服器的用途:部落格(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動手腳,所以,非學校使用者的註冊成功,是個假象,因為他收不到啟用信了 。
此外,這種設設定方式是針對到這台伺服器中,收發信全部作過濾,若使用者有其它需求,較不適合此法。