iT邦幫忙

DAY 6
13

Rails 的簡單任務系列 第 6

[RoR] 多人用虛擬轉址信箱的建置(1)

保護自己真正 email 地址,或者可以有多個不同名稱的 email 來處理工作上的不同需要,是虛擬轉址信箱常見的應用;這兩天就來說明虛擬轉址信箱如何建置,並且如何與 RoR 來做簡單的結合運用。
為什麼要虛擬轉址信箱?
常常要看一些網站內容,需要註冊又要提供email地址來認證,又不想對那些網站提供自己的真正email地址,若可以隨自己建立無數個虛擬信箱的話,如果發現透過哪個虛擬信箱一直來垃圾信的話,就把那個虛擬信箱給移除掉,垃圾信就不會進來了。

如果有網站以一個 email 來投一票的話,您就是大票倉了…,所以別用email來認個別的一票。

單位信箱常會建立一個實體帳號來收信,若人員異動,信箱的管理和交接有點麻煩,所以可以單位信箱以虛擬轉址的方式,轉寄到業務承辦人的信箱,若異動就只要改轉址目的即可。

建立虛擬轉址信箱的步驟
以 sendmail 為例,Fedora 已預設安裝完成,但只能 local 主機,自己寄自己,可透過以下步驟讓自己的主機的 email 功能在網路上生效,及提供虛址轉址的能力。首先也要在 DNS 上新設一個 A record 指到您的主機IP。

yum install sendmail-cf
cd /etc
cp -pr mail mail.orig
cd /usr/share/sendmail-cf/cf
# 以 /usr/share/sendmail-cf/cf/generic-linux.mc 為基礎來編輯sendmail.mc
vi sendmail.mc
# sendmail.mc 檔案開始
divert(-1)
# ....
divert(0)dnl
VERSIONID(`$Id: generic-linux.mc,v 8.1 1999/09/24 22:48:05 gshapiro Exp $')
OSTYPE(linux)dnl
DOMAIN(generic)dnl
undefine(`UUCP_RELAY')dnl
undefine(`BITNET_RELAY')dnl
MASQUERADE_AS(主機名稱)dnl
define(`confBAD_RCPT_THROTTLE', `3')dnl
define(`confTO_IDENT',`0s')dnl
define(`confMILTER_LOG_LEVEL',`1')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
FEATURE(local_procmail)dnl
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')dnl
FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl
FEATURE(`blacklist_recipients')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
# sendmail.mc 檔案結束
./Build sendmail.cf
cp sendmail.cf /etc/mail/sendmail.cf
cd /etc/mail
# 虛擬主機的名稱加在這裡 local-host-names  本身才會收下來,當然也把主機本身的名稱也加在此處
vi local-host-names
# 
vi virtusertable
# 詳細設法參考 http://www.sendmail.org/tips/virtualHosting 裡的 Sendmail Configuration 的第 4 點
# virtusertable 單純的設定內容如下
#
# 1. 如果要寄到該主機自己的帳號中的話:
joe@yourdomain.com jschmoe
# 2. 如果要轉寄到您外部信箱的話
jane@yourdomain.com jdoe@othercompany.com
# 3. 建議不用此寫法,那麼垃圾信猜任何的 user name 通通會寄成功到您信箱中
@yourdomain.com jschmoe
# virtusertable 內容結束
# 一定一定要執行這個動作才會生效
makemap hash virtusertable < virtusertable
/etc/init.d/sendmail restart

利用 RoR 讓 user 自行增減虛擬信箱
上述的這些指令,即可將主機建立好虛擬信箱的機制,而每次要增減虛擬信箱,就要管理者上到主機來編寫 virtusertable 內容,並執行 makemap 的動作才生效。所以目標是利用 RoR 來建置一個讓註冊了的 user 可以自行去新增虛擬信箱的名稱,並指定轉到個別所指定的信箱中。


上一篇
[RoR] 簡單完成登入登出的授權機制
下一篇
[RoR] 多人用虛擬轉址信箱的建置(2)
系列文
Rails 的簡單任務33
0
eddy1213
iT邦新手 3 級 ‧ 2008-09-20 23:00:16
  1. Exchange
  2. Google Apps(一年 10 美元 DNS 費用 -> 平民化, 經濟上每個人都玩的起)
    上述二者都可以輕易的使用 GUI 介面建立為每個 Physical Email Account 建立多個 Email Alias Name!
0
lbcgh
iT邦研究生 4 級 ‧ 2008-09-21 02:07:59

GMail有提供帳號別名的功能,可以有多個不同名稱的 email 來處理不同需要
例如帳號 'ithelp' ,可以使用'加號'('+')後面加其他字,GMail 都會以加號前視為你的帳號。
舉例來說,'ithelp+ithome@gmail.com' 一樣會在'ithelp@gmail.com' 的信箱收到,而你可以從「收件人」裡看到這封信是寄給那個別名的。

0

謝謝分享咯!

0
andychiou
iT邦新手 5 級 ‧ 2009-08-10 10:47:53

感謝分享

我要留言

立即登入留言