用 postfix 及 vm-pop3d 建立虛擬電子信箱 *
所謂的「虛擬電子信箱」指的是用戶在伺服器上沒有實體的帳號,但是卻可以透過 POP3 或是 Open Webmail 來使用電子郵件服務。這樣的組態,一方面比較不會有安全性的問題,同時也可以在一部伺服器上支援較多的用戶。
vm-pop3d 的原理
其實,vm-pop3d 的功能算滿單純的,如要登入一部有安裝 vm-pop3d 的伺服器收取郵件,有兩種驗證用戶的方式:
- 你可以輸入本機用戶的帳號(username)來登入,則它先去查詢 /etc/passwd 及 /etc/shadow,以驗證帳號、密碼是否正確,如正確無誤,再檢查 /var/spool/mail/username 是否有郵件。
- 如果你輸入的是電子郵件地址 ([email protected]) 做為登入帳號,它就會依據這個電子郵件地址,拆解成 「username」 及 「virtual.example.com」 兩個部份,然後查詢 /etc/virtual/virtual.example.com/passwd,以驗證帳號、密碼是否正確,如正確,則繼續檢查 /var/spool/virtual/virtual.example.com/username 是否有郵件。
所以,你要做的,就是想辨法把虛擬電子信箱的郵件放到相對應的子目錄即可。
postfix 基本設定
系統必須先安裝好 postfix (請參考這一篇),藉由 postfix 將虛擬電子信箱的郵件放到相對應的子目錄,以下步驟僅說明如何設定虛擬電子信箱。
- 先移除 imap:
apt-get remove imap
- 編輯 /etc/postfix/main.cf,加入:
default_privs = nobody mail_spool_directory = /var/spool/mail propagate_unmatched_extensions = virtual virtual_mailbox_base = /var/spool/virtual virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox virtual_maps = hash:/etc/postfix/virtual
- 建立相關子目錄:
mkdir /var/spool/virtual mkdir /etc/virtual
- 重新啟動 postfix:
service postfix restart
安裝 vm-pop3d
- 從本站下載 vm-pop3d 的安裝檔至 /tmp,並執行安裝:
cd /tmp wget http://www.vixual.net/download/source/vm-pop3d/vm-pop3d-1.1.6-1.i386.rpm rpm -Uvh vm-pop3d-1.1.6-1.i386.rpm
- 刪除 vm-pop3d 預設的啟動程式:
rm -rf /etc/init.d/vm-pop3d
- 建立 /etc/xinetd.d/vm-pop3d,內容如下:
service pop3 { disable = no socket_type = stream protocol = tcp wait = no user = root instances = 25 server = /usr/sbin/vm-pop3d server_args = -u nobody log_type = SYSLOG local4 info log_on_success = PID HOST EXIT DURATION log_on_failure = HOST ATTEMPT }
- 重新載入 xinetd,以啟動 vm-pop3d:
service xinetd restart
建立虛擬伺服器
- 編輯 /etc/postfix/virtual_mailbox,在最下面加入:
virtual.example.com /var/spool/virtual/virtual.example.com
- 編輯 /etc/postfix/virtual,在最下面加入:
virtual.example.com anything [email protected] username.virtual.example.com
- 編輯 /etc/postfix/aliases,在最下面加入:
username.virtual.example.com: /var/spool/virtual/virtual.example.com/username
- 編輯 /etc/postfix/access,在最下面加入:
virtual.example.com ok
- 重新建立資料庫:
postmap hash:/etc/postfix/virtual_mailbox postmap hash:/etc/postfix/virtual postalias hash:/etc/postfix/aliases postmap hash:/etc/postfix/access
- 建立相關子目錄及密碼檔:
mkdir /var/spool/virtual/virtual.example.com chown nobody.mail /var/spool/virtual/virtual.example.com mkdir /etc/virtual/virtual.example.com touch /etc/virtual/virtual.example.com/passwd chmod 644 /etc/virtual/virtual.example.com/passwd
- 重新啟動 postfix:
service postfix restart
建立虛擬電子信箱的用戶
對 vm-pop3d 而言,驗證用戶的方式,只是檢查虛擬電子信箱的目錄下,該用戶的密碼是否被建立。可使用下列指令建立用戶的密碼:
htpasswd /etc/virtual/virtual.example.com/passwd username
POP3 連線方式
- 如果你是伺服器上本機的用戶,當連線時,帳號的部份只要使用原本的用戶帳號 (username) 來做驗證即可。
- 如果你是虛擬電子信箱的用戶,當連線時,帳號的部份需輸入完整的電子郵件地址 ([email protected]) 做為驗證。
虛擬電子信箱與 Open Webmail
Open Webmail 的虛擬用戶功能主要是搭配 vm-pop3d 與 PostFix 來使用。系統中 auth_vdomain.pl 這個認證模組便是用來對 vm-pop3d 與 postfix 上的虛擬用戶進行認證的工作。此外 Open Webmail 還提供 Web 介面,讓被授權的用戶可就對虛擬郵件伺服器下的用戶進行管理。
使用 Open Webmail 讀取郵件
建立 /var/www/cgi-bin/openwebmail/etc/sites.conf/virtual.example.com,內容如下:
auth_module auth_vdomain.pl auth_withdomain yes mailspooldir /var/spool/virtual/virtual.example.com use_syshomedir no use_homedirspools no enable_autoreply no enable_setforward no enable_vdomain yes vdomain_admlist sysadmin #指定哪些用戶有管理者的權限 vdomain_maxuser 100 vdomain_vmpop3_pwdpath /etc/virtual vdomain_vmpop3_pwdname passwd vdomain_vmpop3_mailpath /var/spool/virtual vdomain_postfix_aliases /etc/postfix/aliases vdomain_postfix_virtual /etc/postfix/virtual vdomain_postfix_postalias /usr/sbin/postalias vdomain_postfix_postmap /usr/sbin/postmap
請注意,上面的設定檔有一個 「vdomain_admlist」 的參數,這個參數是用來指定哪些虛擬電子信箱擁有管理者的權限,管理者可建立、修改或刪除虛擬電子信箱。
登入 Open Webmail 時
- 如果你是本機用戶,則僅需輸入本機用戶帳號 (username) 與密碼即可登入。
- 如果你要以虛擬電子信箱登入,且連結的網址與虛擬電子信箱的網址相同,則僅需輸入用戶名稱 (username) 與密碼即可。
- 如果你要以虛擬電子信箱登入,但連結的網址與虛擬電子信箱的網址不相同,則你必須輸入完整的電子信箱 ([email protected]) 與密碼才能登入。
請問一下
小弟按照大大所教的來做
但是我寄信到虛擬網域時
他一直說unknow user
我有建立該帳號啊
是哪裡有需要注意的嗎
謝謝