歡迎您光臨本站 註冊首頁

postfix Maildir Mailbox 的區別 高手專區

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

postfix Maildir Mailbox 的區別 高手專區

理論知識

授人以漁I-Postfix+LDAP做虛擬郵箱伺服器

版權聲明:本文可以任意轉載,轉載時請保持文章的完整性,並以超鏈接形式標明文章原始出處和作者信息及本聲明。

http://geoffl.blog.163.com/

作者: 富貴貓


前陣子開始要做Postfix郵件伺服器,網上搜了好多文章,不過大部分文章只是作者自己安裝步驟的羅列,只能算授人以魚,所以我看了之後還是需要去看 Postfix的手冊,還要看很多官方的參考書,看完之後頗有心得,所以就打算寫一個「授人以漁」的系列安裝設置的文章,讓你知其然也知其所以然。

Postfix作郵箱,有4種設置方式,分別是共享域名+系統帳戶、獨立域名+系統帳戶、獨立域名+虛擬帳戶和虛擬域名+特殊格式郵箱。鑒於通常我們不可能給每個用戶設置一個系統帳戶,所以第一第二種就不考慮不介紹了。既然是用Postfix來建立我們自己地郵箱系統,所以也沒必要去兜很多圈子設置特殊格式郵箱,所以第四種也不考慮。剩下只有一種方式,就是獨立域名+虛擬郵箱。

所謂獨立域名,就是即使用戶名是一樣的,但如果域名不同其郵件也將放置在不同的目錄。譬如info@abc.com和info@def.com,這二個e-mail地址都以info為用戶名,但域名不同,如果是共享域名,他們的mail將被放置在同一個目錄下,而獨立域名將放置在不同目錄下。如果你們公司是很大的集團,下面分好幾個公司,分別有獨立的域名,這難免有重名的員工,這種情況下,後者顯然是我們希望看到的。而所謂虛擬帳戶,既然那些郵箱用戶只是使用mail服務,我們當然沒有必要去給每個用戶在Linux下面開設一個個系統帳戶,所以我們就用一些資料庫之類的東西來保存這些帳戶信息,譬如用哈希表、SQL資料庫或者LDAP。我使用的是獨立域名+虛擬LDAP帳戶。

Postfix的安裝我就不說了,非常簡單。不過如果不會也沒關係,後面我會寫一篇關於Postfix+mail quota的,那時候需要下載、補丁和編譯,等於是Postfix的安裝。

LDAP也不說了,要完全掌握LDAP不是這篇能解決的,我只假設你的LDAP伺服器里已經有mail這個欄位。

下面開始說Postfix如何設置。Postfix的配置文件是/etc/postfix/main.cf,這是獨立域名+LDAP的設置

# ===== Basic Setting =====

mail_owner = postfix
myhostname = pop.test.com
inet_interfaces = all
queue_directory = /var/spool/postfix
mynetworks = 127.0.0.0/8

home_mailbox =

# ===== Virtual Mailbox =====
virtual_mailbox_domains = hash:/etc/postfix/v_domains
virtual_mailbox_maps = ldap:/etc/postfix/v_mailbox_maps

virtual_mailbox_base = /var/spool/vhosts/
virtual_minimum_uid = 500
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_transport = virtual

myhostname設置你的郵件伺服器名字

inet_interfaces = all設置你在哪些網卡上監聽

另外有幾個是需要解釋的:我們接受哪些域名的郵件?我們的域名下有哪些用戶?他們的郵件存放在什麼目錄?

我們接受那些域名的郵件,這是由virtual_mailbox_domains來定義的。雖然我們可以直接使用

virtual_mailbox_domains = test.com, test2.com

這樣的格式來定義這些域名,不過我還是建議如我這樣使用一個表來存放,這樣更方便日後的維護,表名是隨意取的,有沒有後綴都沒關係,我用v_domains作為表的名字,在main.cf里定義是

virtual_mailbox_domains = hash:/etc/postfix/v_domains

v_domains的內容如下

test.com OK

test2.com OK

這是個text文件,僅僅包含域名,但為了滿足哈希表的格式,所以在後面添加一個OK。然後我們還要把這個文件變成Postfix的資料庫格式,因此用如下命令轉變其格式

postmap v_domains

之後你會得到一個以db為後綴的文件v_domains.db。注意,每次修改完v_domains你都需要使用一次postmap。



我們有哪些用戶,這是由virtual_mailbox_maps來決定。同樣,你可以用哈希表,不過我還是用LDAP。為了方便你理解,我先說明一下如果用哈希表,它的格式應該是

user1@test.com test.com/user1_mailDirectory/

user2@test.com test.com/user2_mailDirectory/

user1@test2.com test2.com/user1_mailDirectory/

左邊是用戶的e-mail地址,空格之後是該用戶的郵件存放目錄。既然我們說了,獨立域名代表info@abc.com和info@def.com的郵件放置在不同目錄下,所以我們的定義里user1@test.com和user1@test2.com的目錄是不同的。如果換成LDAP,我們要得到相同的結果,即用e-mail地址來搜索,得到其郵件存放目錄

既然講到郵件存放目錄,就一併解釋一下到底這個目錄怎樣定義的。郵件是存放在

virtual_mailbox_base\virtual_mailbox_maps\home_mailbox下,也就是說 virtual_mailbox_base定義的目錄下,postfix會根據virtual_mailbox_maps返回的用戶目錄自動創建該目錄,然後如果home_mailbox也有定義,那麼在用戶目錄下還會創建home_mailbox定義的名字。舉例來說,按照上面的設置,郵件會存放在

/var/spool/vhosts/test.com/user1/下面。

如果home_mailbox不是空白而是Mail/,那麼就會存放在

/var/spool/vhost/test/com/user1/Mail/下面。home_mailbox有什麼用呢?舉個例子,比方你已經有 homeDirectory了,但那是你平時放文件的地方,那麼再在同樣目錄下放郵件就變得很奇怪,所以需要home_mailbox來定義郵件放在你 homeDirectory下的什麼目錄下

注意:地址的最後有沒有"/"決定了使用mailbox格式還是maildir格式,沒有"/"表示mailbox,有表示maildir。所以並不象大部分人認為的,home_mailbox定義為MailDir才表示使用maildir格式。再舉幾個例子

/var/spool/vhosts/test.com/user1/  表示使用MailDir格式

/var/spool/vhosts/test.com/user1  表示使用MailBox格式

/var/spool/vhosts/test.com/user1/Mail/  表示使用MailDir格式

/var/spool/vhosts/test.com/user1/MailDir/ 表示使用MailDir格式

/var/spool/vhosts/test.com/user1/MailDir 表示使用MailBox格式,即使home_mailbox是maildir,但沒有最後的"/",只能表示使用MailBox格式。同樣道理

/var/spool/vhosts/test.com/user1/MailBox/ 表示使用MailDir格式,雖然home_mailbox是mailbox,但最後的"/"就說明了是使用MailDir格式。

回到virtual_mailbox_maps的LDAP定義,其格式是

virtual_mailbox_maps = ldap:/etc/postfix/v_mailbox_maps

v_mailbox_maps只是一個連接Postfix和LDAP的配置文件,同樣文件名是隨意取的。v_mailbox_maps的內容是

# LDAP Server的IP地址,我是設在和postfix同一電腦,所以是127.0.0.1

server_host = 127.0.0.1
# 下面這些關於LDAP Search的內容如果你不了解,請學習LDAP

search_base = ou=people,o=test
server_port = 389
bind = yes
bind_dn = cn=root,o=test
bind_pw = <rootpassword>
version = 3

# 下面是關鍵,我會額外解釋



測試我本機的

root@erabay:/home/Virtual# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
debug_peer_level = 2
home_mailbox = Maildir/
inet_interfaces = all
mailbox_size_limit = 0
mydestination = localhost
myhostname = mail.erabay.com
mynetworks = 127.0.0.0/8
myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_helo_required = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
virtual_gid_maps = static:33
virtual_mailbox_base = /home/Virtual/
virtual_mailbox_domains = mysql:/etc/postfix/mysql/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 51200000
virtual_mailbox_maps = mysql:/etc/postfix/mysql/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 33
virtual_transport = virtual
virtual_uid_maps = static:33



mail.log 日記

May 26 11:16:53 erabay postfix/smtpd: EACA69460D: client=localhost
May 26 11:16:53 erabay postfix/cleanup: EACA69460D: message-id=<20080526031653.EACA69460D@mail.erabay.com>
May 26 11:16:53 erabay postfix/qmgr: EACA69460D: from=<weifeng270@gmail.com>, size=485, nrcpt=1 (queue active)
May 26 11:16:53 erabay postfix/smtpd: disconnect from localhost
May 26 11:16:54 erabay postfix/virtual: EACA69460D: to=<101@1.com>, relay=virtual, delay=0.08, delays=0.05/0.02/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
May 26 11:16:54 erabay postfix/qmgr: EACA69460D: removed
May 26 11:18:39 erabay postfix/master: terminating on signal 15
May 26 11:18:40 erabay postfix/master: daemon started -- version 2.4.5, configuration /etc/postfix
May 26 11:18:40 erabay postfix/qmgr: 2166F945FF: from=<weifeng270@gmail.com>, size=483, nrcpt=1 (queue active)
May 26 11:18:40 erabay postfix/virtual: 2166F945FF: to=<88@1.com>, relay=virtual, delay=331, delays=331/0.04/0/0.03, dsn=2.0.0, status=sent (delivered to mailbox)
May 26 11:18:40 erabay postfix/qmgr: 2166F945FF: removed
May 26 11:18:55 erabay postfix/smtpd: connect from localhost
May 26 11:18:55 erabay postfix/smtpd: C569E945FF: client=localhost
May 26 11:18:55 erabay postfix/cleanup: C569E945FF: message-id=<20080526031855.C569E945FF@mail.erabay.com>
May 26 11:18:55 erabay postfix/smtpd: disconnect from localhost
May 26 11:18:55 erabay postfix/qmgr: C569E945FF: from=<weifeng270@gmail.com>, size=485, nrcpt=1 (queue active)
May 26 11:18:55 erabay postfix/virtual: C569E945FF: to=<112@1.com>, relay=virtual, delay=0.06, delays=0.05/0/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
May 26 11:18:55 erabay postfix/qmgr: C569E945FF: removed
May 26 11:23:40 erabay postfix/qmgr: ED12F94609: from=<weifeng270@gmail.com>, size=485, nrcpt=1 (queue active)
May 26 11:23:40 erabay postfix/qmgr: D92E494601: from=<weifeng270@gmail.com>, size=483, nrcpt=1 (queue active)
May 26 11:23:40 erabay postfix/virtual: ED12F94609: to=<100@1.com>, relay=virtual, delay=459, delays=459/0.05/0/0.05, dsn=2.0.0, status=sent (delivered to mailbox)
May 26 11:23:40 erabay postfix/qmgr: ED12F94609: removed
May 26 11:23:40 erabay postfix/virtual: D92E494601: to=<99@1.com>, relay=virtual, delay=566, delays=566/0.05/0/0.03, dsn=2.0.0, status=sent (delivered to mailbox)
May 26 11:23:40 erabay postfix/qmgr: D92E494601: removed

這是個我安裝了postfixadmin在firfox中創建的用戶名。

有時可以有時不行。

May 15 15:11:39 erabay postfix/virtual: 4BF73945EB: to=<kk@211.com>, relay=virtual, delay=0.07, delays=0.05/0.01/0/0.01, dsn=2.0.0, status=sent (delivered to maildir)
May 15 15:11:39 erabay postfix/qmgr: 4BF73945EB: removed
May 15 15:14:25 erabay postfix/smtpd: connect from localhost
May 15 15:14:26 erabay postfix/smtpd: 0584C945EB: client=localhost
May 15 15:14:26 erabay postfix/cleanup: 0584C945EB: message-id=<20080515071426.0584C945EB@mail.erabay.com>
May 15 15:14:26 erabay postfix/qmgr: 0584C945EB: from=<weifeng270@gmail.com>, size=488, nrcpt=1 (queue active)
May 15 15:14:26 erabay postfix/smtpd: disconnect from localhost
May 15 15:14:26 erabay postfix/virtual: 0584C945EB: to=<kkk@444.com>, relay=virtual, delay=0.09, delays=0.04/0.03/0/0.02, dsn=2.0.0, status=sent (delivered to mailbox)
May 15 15:14:26 erabay postfix/qmgr: 0584C945EB: removed
May 15 15:15:01 erabay postfix/qmgr: D40E794605: from=<weifeng270@gmail.com>, size=488, nrcpt=1 (queue active)




這個是我修改postfixadmin的設置

// Encrypt
// In what way do you want the passwords to be crypted?
// md5crypt = internal postfix admin md5
// md5 = md5 sum of the password
// system = whatever you have set as your PHP system default
// cleartext = clear text passwords (ouch!)
$CONF['encrypt'] = 'cleartext';
$CONF['default_language'] = 'en';

// Database Config
// mysql = MySQL 3.23 and 4.0
// mysqli = MySQL 4.1
// pgsql = PostgreSQL
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'kernel';
$CONF['database_name'] = 'postfix';
$CONF['database_prefix'] = '';

[ 本帖最後由 weifeng270 於 2008-5-26 11:33 編輯 ]
《解決方案》

我已經解決了。請高手不要回貼。

貓咪是對的。

[火星人 ] postfix Maildir Mailbox 的區別 高手專區已經有1055次圍觀

http://coctec.com/docs/service/show-post-30279.html