·¢²©ÎÄ
ÂÃÐÐÕß2ºÅ

http://blog.chinaunix.net/space.php?uid=611418

¹«µÀµÄÖ¸Ôð»áÈÃÎÒÓÀÔ¶¼Çס²¢¸Ð¼¤Ä㣡   
¸öÈË×ÊÁÏ
  • ²©¿Í·ÃÎÊ£º910129
  • ²©ÎÄÊýÁ¿£º148
  • ²©¿Í»ý·Ö£º14065
  • ²©¿ÍµÈ¼¶£ºÉϽ«
  • ×¢²áʱ¼ä£º2006-05-06 16:08:12
¶©ÔÄÎҵIJ©¿Í
  • ¶©ÔÄ
  • ¶©Ôĵ½Ïʹû
  • ¶©Ôĵ½×¥Ïº
  • ¶©Ôĵ½Google
×ÖÌå´óС£º´ó ÖРС²©ÎÄ
·ÖÀࣺ Linuxѧϰ


[¸½ÑÔ]
¸Ã¸½ÑÔ»òÐí²»³ÉÆäΪʲôÐí¿ÉÖ¤£¬µ«»¹ÊÇÏ£ÍûÄú×ðÖØ×÷ÕßµÄÔ¸Íû¡£
Èç¹ûÄú·¢ÏÖÓÐʲô´íÎó£¬Ç뼰ʱ֪ͨÎÒ£¬ÎÒ½«¾¡¿ì×÷³öÐ޸ġ£Èç¹ûÄúÔÚÍøÉÏ×ªÔØ£¬Äǽ«ÊÇÃâ·Ñ£¬µ«Ï£ÍûÄú¸½Éϱ¾¸½ÑÔ£¬²¢ÇÒ×¢Ã÷³ö´¦µÄÁ´½Ó¡£Èç¹ûÄúÒª°ÑËüÓÃÓ¡Ë¢ÎïÐÎʽ³ö°æ£¬Çëͨ¹ýwww.cnfug.org¸ú±¾È˽ÓÇ¢¡£
ÄúÔÚÒÔ±¾ÎÄ×÷Ϊ¸ù¾ÝÅäÖõçÄÔµÄʱºò£¬Èô³öÏÖÈκιÊÕÏ£¬ºó¹û×Ô¸º£¬Óë±¾×÷ÕßÎ޹ء£


Ä¿±ê
±¾ÎĵÄÄ¿µÄÊÇÔÚÓÚ˵Ã÷ÈçºÎÔÚFreeBSDµÄ»·¾³ÏÂÃæ´î½¨Ò»¸öÓʼþϵͳ¡£Õâ¸öÓʼþϵͳ֧³ÖÐéÄâÓû§£¬ÌṩIMAP·þÎñ£¬¿ÉÒÔ³ÉΪ¹¹³ÉWebMailϵͳµÄ»ù´¡¡£
Ö§³ÖIMAP·þÎñµÄWebmailÓÐÖøÃûµÄIMPºÍSquirrelMailµÈµÈ¡£
±¾ ÎÄËäÈ»ÊÇÓÃPgSQL×÷Ϊºǫ́Êý¾Ý¿â£¬µ«ÊÇÈÔÈ»¶ÔʹÓÃMySQL£¬LDAPÊý¾Ý¿âµÄ×÷Ϊºǫ́µÄÀàËÆÓʼþϵͳÓÐÆô·¢×÷Óá£Èç¹û×ÐϸÔĶÁ±¾ÎÄ£¬Ò»¶¨»áÓÐËùÊÕ»õ µÄ¡£Ê¹ÓÃÆäËûºǫ́Êý¾Ý¿âµÄ»°£¬ÒªÐ޸ĵĵط½ÓÐÁ½´¦£ºpam·þÎñºÍmain.cfµÄvirtual_mailbox_mapsÏî¡£
±¾ÎÄËùÓеĵ÷ÊÔÊÇÔÚFreeBSD-4.8 releaseÉÏͨ¹ýµÄ£¬Ò²¶ÔFreeBSD-5×÷Á˶îÍâµÄ˵Ã÷£¬Ö÷ÒªµÄ²îÒìÊǼ¯ÖÐÔÚpam·þÎñµÄÅäÖò»Í¬¶øÒÑ£¬Ï£ÍûÄÜÓÐËù°ïÖú¡£
LinuxµÄÓû§Ò²ÄÜ¿ÉÒԲο¼±¾ÎĵÄÅäÖã¬ÄúÖ»ÐèÒªÁôÒâ·¾¶ºÍpam·þÎñµÄÅäÖá£pam·þÎñÅäÖøúFreeBSD-5ÀàËÆ¡£

Áã¡¢ÔĶÁ×¼±¸

1)ÔĶÁ±¾ÎÄÐèÒªÒ»¶¨»ù´¡£¬ÎÒ¼ÙÉèÄãÒѾ­Çå³þÒÔÏµĶ«Î÷£º
ÓʼþϵͳµÄ»ù±¾Ô­Àí£¬ÓʼþϵͳµÄÏà¹ØÐ­ÒéµÄ×÷Óã¬ÀýÈçsmtp,pop3,imap¡£

2)ʲôÊÇSASL£º
SASLµÄÓ¢ÎÄÈ«³ÆÊÇSimple Authentication and Security Layer£¬¼òµ¥ÑéÖ¤ºÍ°²È«²ã¡£
SMTP ЭÒ鲢ûÓÐÌṩÓû§ÑéÖ¤¹¦ÄÜ£¬ºÜÈÝÒ×ÄäÃûÖÐתÓʼþ¡£¼´Ê¹ÏÞÖÆÁË¿ÉÒÔת·¢µÄÍø¶Î£¬Ò²²»°²È«¡£ËûµÄ¶¨ÒåÊÇ£º a method for adding authentication support to connection-based protocols£¬Îª»ùÓÚÁ¬½ÓµÄЭÒéÌṩÈÏÖ¤¹¦ÄÜ¡£

3)Èí¼þµÄ½ÇÉ«£º

Postfix£º³äµ±MTA£¬¾ÍÊÇsmtpd£¬×÷ΪÓʼþת·¢Óá£

Cyrus-SASL£º·Ö³ÉÁ½²¿·Ö
a)CyrusÏîÄ¿µÄSASL lib£¬PostfixʹÓÃSASLÐèÒªÓõ½µÄlib¡£
b)Cyrus-saslauthd£¬Ò»¸öSASLµÄÑéÖ¤ºǫ́³ÌÐò¡£

Cyrus-IMAPD£º
ÌṩIMAP·þÎñ£¬ÌṩÓʼþ¶ÁÈ¡ºÍ¹ÜÀíÓÊÏäµÄ×÷Óá£

cyradm£º
Õâ¸ö²»ÊÇÒ»¸ö¶ÀÁ¢µÄÈí¼þ£¬°²×°Cyrus-IMAPµÄʱºò»á×Ô¶¯°²×°ÉÏÈ¥µÄ¡£ËüµÄ×÷ÓÃÊÇ´´½¨ºÍ¹ÜÀíÓÊÏä¡£

PgSQL£ººǫ́Êý¾Ý¿â£¬´æ·ÅÓû§µÄÃÜÂëµÈµÈ¡£

×ܵÄÀ´½²£¬Postfix³äµ±×ªËÍÓʼþµÄ·þÎñ£»Cyrus-IMAP³äµ±ÌṩÓʼþ¶ÁÈ¡¡¢¹ÜÀíµÄ·þÎñ£»SASLʹÓÃÑéÖ¤·þÎñ¡£

4¡¢Cyrus-SASLºÍCyrus-IMAPD²»ÊÇͬһÑù¶«Î÷
¾Í¸úMicrosoft Visual C++ºÍMicrosoft Office²»ÊÇͬһ¸ö¶«Î÷Ò»Ñù

Ò»¡¢±¾ÏµÍ³µÄ¹¤×÷Ô­ÀíºÍ½á¹¹
×¢ÒâÊDZ¾ÏµÍ³¡£ÊµÏÖÒ»¸öÓʼþϵͳÓкܶàÖÖ·½Ê½£¬¼´Ê¹ÄãÓõͼÊǸú±¾ÏµÍ³ÍêȫһÑùµÄÈí¼þ£¬Ò²Óв»Í¬µÄʵÏÖ·½Ê½¡£
±¾ÏµÍ³µÄÓʼþÖ÷»úÊÇ:
f4.room
f4ÊÇÒòΪfbsd-4£¬ÓòΪroom£ºÊÇÒòΪµçÄÔ·ÅÔÚ·¿¼äÀïÍ·¡£ÄúÒª¿´²»Ë³ÑÛ£¬¾Í°Ñ±¾ÎĵÄf4.room¶¼»»³Éexample.comËãÁË¡£

I¡¢PostfixµÄµ£ÈεŤ×÷µÄ²¿·Ö£º
1¡¢Õâ¸öÊÇͶµÝÓʼþµÄʱºòµÄÓû§ÑéÖ¤µÄ²¿·Ö£º

 |------------------------|
| Postfix |
| |
| |-------------| |
|-| Cy-SASL-lib |--------|
| |
|-------------|
|
|
|--------------|
| Cy-saslauthd |
|--------------|
|
|
|-------|
| PAM |
|-------|
|
|
|-----------------------|
| PostgreSQL |
|-----------------------|

ͼÀý˵Ã÷£º
µ±ÓгÌÐò·ÃÎÊsmtp·þÎñ(TCP¶Ë¿Ú 25)µÄʱºò£¬Postfix»á¸ø³ö220 ESMTPµÄ»ØÓ¦£¬ÌáʾÊÇÒªÑéÖ¤µÄsmtp·þÎñ¡£ÃÜÂëºÍÓû§ÃûÌá½»¸øPostfixÒÔºó£¬Postfix»á°ÑÃÜÂëºÍÓû§Ãûͨ¹ýµ÷ÓÃCy-SASL libÌá½»¸øÒ»¸öºǫ́ÑéÖ¤³ÌÐò£ºCy-saslauthd¡£Cy-saslauthd»áµ÷ÓÃPAMÄ£¿é½øÐÐÑéÖ¤¡£PAMÄ£¿é»áµ÷ÓÃÃûΪsmtpµÄPAM·þ ÎñÃû½øÐÐÑéÖ¤¡£ÔÚ±¾ÏµÍ³ÖУ¬PAM·þÎñÊǵ÷ÓÃpam_pgsql·ÃÎÊPostgreSQL½øÐÐÑéÖ¤µÄ¡£È»ºó½á¹ûÔÙReturn»ØÈ¥¡£

2¡¢ÓʼþתËÍ£º
·Ö³ÉÈýÖÖÇé¿ö£º
1)Èç¹ûÓʼþÊǸø·Ç±¾ÓòÓû§µÄ£¬ÀýÈçÊÇ21cn.comµÄ£¬ÂíÉϾÍת·¢¹ýÈ¥ÁË¡£

2)Èç¹ûÓʼþÊǸø±¾ÓòÐéÄâÓû§µÄ£¬PostfixÒª·ÃÎÊPgSQL£¬À´¿´¿´±¾ÓòÊÇ·ñÓÐÕâ¸öÐéÄâÓû§¡£ÓоÍת·¢µ½ËûµÄÐéÄâÓÊÏ䣬ûÓоͰÑÓʼþdeferedµô¡££¨Ê²Ã´ÊÇdefered£¿´ý²é£¬¹À¼ÆÊÇ¿³µôµÄÒâ˼£©
Postfix <--> PostgreSQL

3)Èç¹ûÊDZ¾ÓòµÄ±¾µØÓû§£¬¾Íת·¢µ½±¾µØÓû§µÄÓÊÏ䣬¾ÍÊÇ/var/mail/usernameÄÇÀï¡£
Postfix <--> /etc/passwd

II¡¢Cyrus-IMAPµ£ÈεŤ×÷²¿·Ö
1¡¢ÓʼþµÄ»ñÈ¡£º
Cyrus- IMAPDÓÐËû×Ô¼ºµÄÒ»Ì×¹ÜÀíÓʼþµÄ·½·¨£¬²»ÊÇÓô«Í³µÄunixÓÊÏä·½·¨(/var/mail/username)£¬µ«ÊÇÓÊÏäµÄ¶Áȡʮ·Ö¸ßЧ¡£µ± Postfix»ñµÃÄ¿µÄµØÊDZ¾ÓòµÄÐéÄâÓû§µÄʱºò£¬ÎÒÃÇÉèÖÃPostfixÄÚÖÃÖ§³ÖµÄÒ»¸ö¹¦ÄÜ£ºµ÷ÓÃCyrus-IMAPµÄÒ»¸ö³ÌÐò£¬½«Óʼþ¡°Äá±¹ýÀ´·Å µ½ÓÉCyrus-IMAPD¹ÜÀíµÄÓÊÏäÀïÍ·¡£

2¡¢Óû§µÄÑéÖ¤¡£
µ±Óû§Òª¶ÁÈ¡×Ô¼ºµÄÓʼþµÄʱºò£¬ÒªÍ¨¹ýIMAP·þÎñ¡£±¾ÏµÍ³ÅäÖÃÁËCyrus-IMAPͨ¹ýCyrus-saslauthd½øÐÐÑéÖ¤¡£ÆäÔ­Àí´ó¸ÅͬPostfixÑéÖ¤Óû§µÄÔ­ÀíÒ»Ñù¡£

 |------------------------|
| Cyrus-IMAPD |
| |
| |-------------| |
|-| Cy-SASL-lib |--------|
| |
|-------------|
|
|
|--------------|
| Cy-saslauthd |
|--------------|
|
|
|-------|
| PAM |
|-------|
|
|
|-----------------------|
| PostgreSQL |
|-----------------------|


III¡¢PgSQL´æ´¢µÄÊý¾Ý
ÏÖÔÚ°ÑPgSQL´æ´¢µÄÊý¾ÝÔÙ×ܽáһϡ£
PgSQLÖ÷Òª´æ´¢Á½²¿·ÖÊý¾Ý£º
1)ÐéÄâÓû§µÄÓû§ÃûºÍÃÜÂë¡£Õⲿ·ÖÊÇÌṩÑéÖ¤Ó㬴Ósaslauthdͨ¹ýPAM·þÎñ·ÃÎÊ¡£

ID  | usr   | pass  | expired | newtok
----+-------+-------+---------+--------
1 | test1 | pass1 | f | f
2 | test2 | pass2 | f | f


2)Óû§µÄµØÖ·ºÍ¶ÔÓ¦µÄÐÅÏä¡£Õⲿ·ÖÊÇPostfix·ÃÎʵ쬴ÓÖлñµÃÓʼþµØÖ·ºÍÓÊÏäµÄÓ³Éä¹ØÏµ£¬È»ºó¸ù¾ÝÓʼþµØÖ·×ª·¢µ½ÏàÓ¦µÄÓÊÏä¡£

ID  | addr           | box
----+----------------+------------
1 | test1@f4.room | test1
2 | test2@f4.room | test2
ÔÚ±¾ÏµÍ³ÖУ¬Êµ¼ÊÉÏÊÇÁ½¸ö±í£¬ÎªÁË·½±ã´ó¼Ò¿´£¬¾Í½«Ëû²ð·Ö³ÉÁ½¸ö±í¡£
ÆäʵʹÓÃÁ½¸ö±íÀ´´æ´¢ÕâЩÊý¾ÝµÄ×ö·¨´Ó°²È«½Ç¶ÈÊÇ¿ÉÈ¡µÄ¡£ÎÒÃDZÈÈç˵ÎÒÃÇ·Ö±ð½¨Á¢Á½¸öÊý¾Ý¿âÓû§£ºpostfixºÍsaslauthd£¬ËûÃÇÖ»ÊǶÔ×Ô¼º¿ÉÒÔ·ÃÎʵıíÓжÁȨÏÞ¡£ÁíÍâÎÒÃÇÔÙ½¨Á¢Ò»¸öÊÓͼ£¬°ÑÁ½¸ö±í¹ØÁªÆðÀ´£¬³¬¼¶Óû§¶ÔÕâ¸öÊÓͼÓжÁȡʹÓõÄȨÏÞ£¬À´½øÐйÜÀí¡£
±¾ÎÄΪÁË·½±ãµ÷ÊÔ£¬Ö»Êǽ¨Á¢Ò»¸ö±í¡£

¶þ¡¢°²×°Èí¼þ
ÇëÎñ±ØÊ¹ÓÃportÀ´°²×°£¬ÒòΪÕâ²»½öÓ°Ïìµ½Äã±àÒë³É¹¦ÂÊ£¬¸üÓ°Ïìµ½ÒÔºóµÄÅäÖá£ÒòΪÄãÖ±½ÓÏÂÔØÔ´Âë°ü±àÒë°²×°µÄ·¾¶¿ÉÄܲ»Ò»Ñù

0.PostgreSQL
·¾¶/usr/ports/databases/postgresql7
make install
×¢Ò⣬Õâ¸ö·¾¶ÏµÄÊÇpgsql 7.3

1.Postfix:
·¾¶ /usr/ports/mail/postfix
make install£¬È»ºó»á³öÏÖÒ»¸ö±àÒëÑ¡ÏîµÄ²Ëµ¥£¬Ñ¡ÔñCyrus-SASL2ºÍPgSQLµÄÖ§³Ö¡£PgSQLµÄÖ§³Ö¿ÉÄÜÓÐÁ½ÖÖ£¬Ò»¸öÊÇ7.3£¬Ò»¸öÊÇ7.2£¬Çë¸ù¾ÝµÄPgSQL·þÎñÆ÷Ñ¡Ôñ¡£

2.Cyrus-SASL2:
ÓÉÓÚÉÏÃæ°²×°PostfixµÄʱºò£¬Ñ¡ÔñÁËCyrus-SASL2Ö§³Ö£¬±àÒëPostfixµÄʱºò£¬»á×Ô¶¯ÏÂÔØCyrus-SASL2½øÐбàÒë°²×°£¬ËùÒÔCyrus-SASL2²»ÐèÒª°²×°¡£

3. Cyrus-sasl-saslauthd
·¾¶£º/usr/ports/security/cyrus-sasl2-saslauthd/
make install

4. Cyrus-imapd-2.1.14
·¾¶£º/usr/ports/mail/cyrus-imapd2/
make install

Èý¡¢ÅäÖÃÈí¼þ
Áã¡¢ÅäÖÃPgSQLºÍpam·þÎñ
1¡¢½¨Á¢Ò»¸ö½Ð×ömailµÄÊý¾Ý¿â¡£
2¡¢½¨Á¢Ò»¸ö½Ð×ömailuserµÄ±í¡£
½á¹¹ÈçÏÂ

ID  | usr   | pass  | expired | newtok | addr          | box   
----+-------+-------+---------+--------+---------------+--------
1 | test1 | pass1 | f | f | test1@f4.room | test1
2 | test2 | pass2 | f | f | test2@f4.room | test2
3¡¢ÔÚPgSQLÀïÍ·½¨Á¢Ò»¸öÊý¾Ý¿âÓû§mail£¬ÃÜÂëmail
4¡¢´´½¨Ò»¸ö/etc/pam_pgsql.conf
#host = 127.0.0.1
database = mail
user = mail
password = mail
table = mailuser
user_column = usr
pwd_column = pass
expired_column = expired
newtok_column = newtok

ÔÚ/etc/pam.confÀïÍ·¼ÓÉÏÒÔϼ¸ÐС£

smtp auth required pam_pgsql.so debug
smtp password required pam_pgsql.so debug
smtp account required pam_pgsql.so debug

imap auth required pam_pgsql.so debug
imap password required pam_pgsql.so debug
imap account required pam_pgsql.so debug

×¢Ò⣬Èç¹ûµÄÊÇFreebsd-5ºÍlinux£¬ËûÃǵÄÅäÖÃÓв»Í¬£º
²»ÓÃÉèÖÃ/etc/pam.conf£¬¶øÊÇÔÚ/etc/pam.d/smtpºÍ/etc/pam.d/imapÀïÍ·¼ÓÉÏ

auth required pam_pgsql.so debug
password required pam_pgsql.so debug
account required pam_pgsql.so debug

Part I¡¢ÅäÖÃPostfix + SASL
[Ä¿±ê]

I¡¢ÅäÖÃPostfix + SASLÑéÖ¤£¬²¢ÇÒ×齨һ¸öÐéÄâÓû§µÄ»·¾³¡£
±ÈÈç˵£ºuser@f4.room
user²¢²»ÊÇFreeBSDÉϵı¾µØÓû§£¬¶øÊÇÒ»¸öÐéÄâµÄÓû§¡£Óû§µÄÈÏÖ¤ÐÅÏ¢ÊÇ´æ´¢ÔÚÊý¾Ý¿âµÄ¡£

Áã¡¢ÓòÃûµÄ´¦Àí
ÏàÐźܶàÅóÓѸúÎÒÒ»Ñù£¬Ã»ÓÐÒ»¸öFQDN(Full Qualiefied Domain Name)¡£ËäȻûÓÐÓòÃû£¬ÎÒÃÇÈÔÈ»¿ÉÒÔÍæPostfix¡£
ÏÈÔÚ/etc/hostsÌí¼ÓÄãµÄÓòÃû¡£ÎÒµÄÓòÃûÉèÖÃΪf4.room£¬¶øÎÒµÄIPÊÇ192.168.1.10£¬ËùÒÔÎÒµÄÎļþÊÇÕâÑùµÄ£º

::1 localhost localhost.my.domain
127.0.0.1 localhost localhost.my.domain
192.168.1.10 f4 f4.room
×¢Ò⣬ÕâÀïµÄÓòÃûf4.room£¬ÊÇÎÒÒÔºóÔÚmain.cfÓõ½ÐéÄâÓû§µÄÓòÃû£¬virtual_mailbox_domainsdµÄÄÇÏî¡£

Ò»¡¢Postfix
ÒªPostfixÕý³£ÔËÐУ¬±ØÐëÏÈÒª°ÑSendmail½ûÓá£
/etc/rc.confÀïÍ·¼ÓÈëÒ»ÐÐ

sendmail="NONE"
È»ºó×öÒ»¸öÁ¬½Ó
cd /usr/local/etc/rc.d
ln -s /usr/local/sbin/postfix postfix.sh

¿´µ½freebsdµÄportµÄºÃ´¦ÁËÂð£¿Ëû¿ÉÒÔÈÃÄã±£ÁôÔ­ÓеÄsendmail¡£
Postfix Ò²ÓÐÒ»¸ö³ÌÐò½Ð×ösendmail¡£Èç¹ûÓÃÔ´Âë°²×°£¬»á°ÑPostfix°²×°ÔÚ/usr/sbinÀïÍ·£¬ÄÇô¾Í»á°Ñsendmail¸²¸ÇµôÁË¡£ÓÃPort À´°²×°£¬Ëü»á×ñÊØfreebsdµÄhier(Ŀ¼½á¹¹)£¬½«Èí¼þ¶¼×°ÔÚ/usr/local/ÏÂÃæµÄsbin/,bin/,lib/,libexe/Ŀ¼ ÀïÍ·£¬²»»á¸úϵͳµÄ³åÍ»¡£
ÄÄÌìÄúÀÏÈ˼Ҳ»¸ßÐË£¬ÏëÍæÍæsendmail£¬ÏÈpkg_deleteÁËpostfix£¬È»ºóÐÞ¸Ä/etc/rc.conf£¬°Ñsendmail="NONE"¸Ä³É"YES"£¬¾Í¿É°ÑsendmailÇë»ØÀ´ÁË¡£

PostfixµÄÅäÖÃÎļþÔÚ/usr/local/etc/postfix/
1¡¢master.cf
¸ü¸ÄÒÔÏÂÁ½Ï
1)ËÑË÷smtpµÄÒ»ÐУ¬È»ºó¸ÄΪ

smtp inet n - n - - smtpd -v

2)ÐÞ¸ÄcyrusµÄ°²×°Â·¾¶
½«argv=.....Ò»Ïî¸ÄΪargv=/usr/local/cyrus/bin/deliver
½á¹ûÈçÏ£º

cyrus unix - n n - - pipe
user=cyrus argv=/usr/local/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}

2¡¢main.cf

#±¾µØÓû§µÄÉèÖÃ

mydomain = my.domain
myhostname = localhost
mydestination = $myhostname, localhost.$mydomain
local_transport = local
local_recipient_maps = unix:passwd.byname $alias_maps

#ÐéÄâÓû§·½ÃæµÄÉèÖÃ
virtual_transport = virtual #ÕâÀïÏÈʹÓÃvirtual´©ËÍÓʼþ£¬ÉÔºóÉèÖúÃimapÒÔºóÊÇʹÓÃcyrusÀ´×¥È¡ÐéÄâÓû§µÄÓʼþ
virtual_mailbox_base = /var/mail/vhost #ÉèÁ¢Ò»¸ö´æ·ÅÐéÄâÓû§µÄ·¾¶£¬ÉèÖúÃimap£¬¿ÉÒÔ²»ÐèÒª
virtual_mailbox_maps = pgsql:/usr/local/etc/postfix/pgsql-mailbox.cf #¸æËßpostfix£¬ÓÊÏäÒªÈçºÎÓ³Éä
virtual_mailbox_domains = f4.room #ÐéÄâÓÊÏäµÄÓò
virtual_minimum_uid = 100 #×îСºÏ·¨ÐéÄâÓû§ID
virtual_uid_maps = static:5000 #ÐéÄâÓû§UID
virtual_gid_maps = static:5000 #ÐéÄâÓû§×éGID

#ÉèÖÃʹÓÃsaslÑéÖ¤
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes

3¡¢´´½¨Ò»¸öpgsql-mailbox.cf

hosts = localhost
user = mail
password = mail
dbname = mail
table = mailuser
select_field = box
where_field = addr

4¡¢½¨Á¢Ïà¹ØµÄĿ¼
È·±£ÄãÓÐrootȨÏÞŶ

mkdir /var/mail/vhost
cd /var/mail/vhost/
touch test1
touch test2
chowm 5000:5000 test1
chowm 5000:5000 test2

¶þ¡¢ÅäÖÃCyrus-SASL

/usr/local/lib/sasl2/Sendmail.conf
pwcheck_method: saslauthd
mech_list: plain login

È»ºó×öÒ»¸öÁ¬½Ó
ln -s Sendmail.conf smtpd.conf

ºÃÏÖÔÚ×öÒ»¸ö²âÊÔ£º
ÏÈ»ñÈ¡plain×Ö·û´Ü¡£ÎªÁË»ñµÃplain×Ö·û´®£¬±ØÐëÒªÓÃbase64±àÂë¡£ÎÒ°²×°ÁËÒ»¸öperlµÄmodÀ´²úÉúÕâ¸öbase64±àÂë¡£

perl -MMIME::Base64 -e 'print encode_base64("test1\0test1\0pass1");'

½á¹û£º
dGVzdDEAdGVzdDEAcGFzczE=
Ò»°ãµÄ¸ñʽÊÇ£º
perl -MMIME::Base64 -e 'print encode_base64("user\0user\0passwd");'

ËûµÄportÔÚ/usr/ports/converters/p5-MIME-Base64/

²âÊÔ£º

> telnet 192.168.1.10 25

Trying 192.168.1.10...
Connected to f4.
Escape character is '^]'.
220 localhost ESMTP Postfix
ehlo host
250-localhost
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-XVERP
250 8BITMIME
auth plain dGVzdDEAdGVzdDEAcGFzczE=
235 Authentication successful

³öÏÖ235 Authentication successful£¬¾Í±íʾÄãµÄ»úÆ÷³É¹¦Ê¹ÓÃpostfix + sasl ÈÏÖ¤ÁË¡£
×¢Ò⣬һ¶¨Òª´òehlo hostname£¬·ñÔò¾Í²»»á³öÏÂÃæµÄ¶«Î÷ÁË¡£

Èý¡¢µ÷ÊÔ·¢ÐŸøÐéÄâÓû§

> mail test1@f4.room
Subject: a test
test
.
EOT
Èç¹û³É¹¦µÄ»°£¬/var/mail/vhost/test1´óСΪ·Ç0£¬¶øÇÒÄã¿ÉÓÃcat¡¢lessµÈ¹¤¾ß°ÑÎļþµÄÄÚÈݶÁ³öÀ´¶Á³öÀ´¡£

ËÄ¡¢Ò»¸öССµÄBug
Ê×ÏÈÉùÃ÷£¬Õâ¸öBug²»ÊÇpostfixµÄ£¬Ó¦¸ÃÊÇÎÒµÄÅäÖõġ£
²»ÖªµÀΪʲô£¬¸ù¾ÝÒÔÉϵÄÉèÖã¬ÔÚ±¾»úÉÏдПø±¾µØÓû§£¬ÀýÈçpowerplane£¬µØÖ·±ØÐëÊÇ£º
powerplane@localhost.my.domain¡£
ÆäËûµØÖ·£¬È磺powerplane@localhost£¬Ëû»áµ±°Ñpowerplane@f4.room´¦Àí¡£
¹À¼ÆÊÇmain.cfºÍ/etc/hostsÉÏûÓÐÅäÖúá£ÄÄλ¸ßÈË£¬ÇëÖ¸µãһϣ¿

Part II¡¢ÅäÖÃCyrus-IMAP
1¡¢±à¼­/usr/local/etc/imapd.conf£¬Õâ¸öÊÇCyrus-IMAPµÄÅäÖÃÎļþ
ÄÚÈÝÓ¦¸ÃÈçÏ£º

configdirectory: /var/imap
partition-default: /var/spool/imap
sieveusehomedir: false
sievedir: /var/imap/sieve
sasl_pwcheck_method: saslauthd #ʹÓÃsaslauthdÀ´½øÐÐÑéÖ¤
admins: cyrus #ÓÃcyrusÓû§À´¹ÜÀíÓÊÏ䣬עÒ⣬Õâ¸ö²»ÊDZ¾µØÓû§¡£¶øÊÇCyradm¹ÜÀíÄ£¿éµÄ¹ÜÀíÔ±¡£¸ÃÓû§ÐÅÏ¢´æ·ÅÔÚ/usr/local/etc/sasldb2ÀïÍ·

2¡¢ÔËÐÐ/usr/local/cyrus/bin/mkimap¡£
Ëû»á×Ô¶¯¶ÁÈ¡/usr/local/etc/imapd.conf£¬×Ô¶¯´´½¨/var/imap£¬/var/spool/imapµÈµÈËùÐèÒªµÄĿ¼µÄ¡£

3¡¢Æô¶¯Cyrus-IMAPD¡£
ʹÓÃPortÀ´°²×°Cyrus-IMAP£¬Ëü»áÔÚ/usr/local/etc/rc.d´´½¨Ò»¸öÆô¶¯½Å±¾µÄ£¬Ãû×ÖΪ£ºimapd.sh.sample¡£ÄãÒª°ÑËü¸ÄÃûΪimapd.sh£¬ÔÚÆô¶¯ÏµÍ³Ê±ºóËû²Å»á×Ô¶¯Ö´ÐС£Èç¹ûËüûÓÐÔËÐУ¬ÄãÒ²¿ÉÈ˹¤Æô¶¯Ëü£º
/usr/local/etc/rc.d/imapd.sh start

4¡¢½¨Á¢CyradmÄ£¿éµÄÐèÒªµÄÓû§Êý¾Ý¿â£ºsasldb2¡£
1)´´½¨sasldb2Êý¾Ý¿â£¬²¢ÇÒ´´½¨¹ÜÀíÔ±cyrus¡£

cd /usr/local/etc
saslpasswd2 -c cyrus
Password:cyrus
Again(for verification):cyrus

chown cyrus:mail sasldb2

2)´´½¨Óû§ÓÊÏ䣺
Cyrus-IMAPÊÇ×Ô¼º¹ÜÀíÓÊÏ䣬´´½¨ÓÊÏ䱨Ðëͨ¹ýcyradmÀ´´´½¨¡£
ÏÂÃæÍ¨¹ýcyradm¹¤¾ßÀ´´´½¨ÓÊÏä¡£
cyradm --user cyrus localhost ÊÇÓÃcyrusÓû§£¬µÇ½µ½Ö÷»úlocalhost¡£
cmÊÇ´´½¨ÓÊÏä
lmÊÇÁгöÓÊÏä

> cyradm --user cyrus localhost
Password:
localhost> cm user.test1
localhost> cm user.test2
localhost> lm
user.test1 (\HasNoChildren) user.test2 (\HasNoChildren)
localhost> quit

ʹÓÃimtestÀ´²âÊÔ

> imtest -m login -a test1 localhost

S: * OK F4 Cyrus IMAP4 v2.1.15 server ready
C: C01 CAPABILITY
S: * CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ MAILBOX-REFERRALS NAMESPACE UIDPLUS ID NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND SORT THREAD=ORDEREDSUBJECT THREAD=REFERENCES IDLE AUTH=NTLM AUTH=OTP AUTH=DIGEST-MD5 AUTH=CRAM-MD5
S: C01 OK Completed
Please enter your password:
C: L01 LOGIN test1 {4}
S: + go ahead
C: <omitted>
S: L01 OK User logged in
Authenticated.
Security strength factor: 0
. logout
* BYE LOGOUT received
. OK Completed
Connection closed.

³öÏÖÉÏÃæ×ÖÑù±íʾµÇ½³É¹¦£¬´ò. logoutÍ˳ö¡£

Part III¡¢ÕûºÏPostfixºÍCyrus-IMAP
ÄãÇ°ÃæµÄÉèÖú͵÷ÊÔ¶¼Ë³Àûͨ¹ýÁËÂ𣿺õ½ÕâÒ»²½ÁË£¬Ö»ÐèÒª¸ÄÒ»¸öÎļþ¡£

/usr/local/etc/postfix/main.cf

virtual_transport = cyrus #ÕâÀïµÄcyrusÊǶÔÓ¦»Ømaster.cfÀïÍ·´«ËÍÓÊÏäÏî¡£

±ðÍü¼ÇÖØÐÂÆô¶¯ÄãµÄpostfix
/usr/local/etc/rc.d/postfix.sh reload

ºÃ¸Ï¿ì²âÊÔһϰÉ

> mail test1@f4.room
Subject: final test
haha
.
EOT

ÔÛÃÇÓÃÒ»¸öÖ§³ÖIMAPµÄ¿Í»§¶ËÊÕÐŰɣ¬ÊÔÊÔÄܲ»Äܳɹ¦£¿Óû§ÃûÓÃtest1£¬ÃÜÂëÊÇpass1¡£

×ܽá
Èç¹ûʹÓÃportµÄʱºò£¬ÓÐʲô²»Ã÷°×£¬²»¶®µÄʱºò£¬¿ÉÒԲο¼¾ßÌåÈí¼þµÄportĿ¼ÀïÍ·µÄpkg-message£¬ÀïÍ·ÓйØÓÚ¸ÃÈí¼þµÄһЩ¼òµ¥ËµÃ÷ºÍÅäÖᣵ±È»²»ÊÇÿ¸öport¶¼Óеġ£
ÎҵĽ¨ÒéÊÇ£º²»ÒªÆÚ´ýһƪHOW-TO¾ÍÈÃÄãÃ÷°×ËùÓж«Î÷£¬Ä㻹ÊÇÒª×÷×÷¹¦¿ÎµÄ¡£
ÏÂÃæÌṩһЩÎĵµ×÷Ϊ²Î¿¼£¬ÓÐЩÎĵµÊÇÔÚÄã°²×°portÒÔºó£¬ÔÚ±¾»úÉϵ쬵±È»ÔÚÔ´Âë°ü¿Ï¶¨Ò²ÓС£

PostfixµÄvirtual domainsÈëÃÅ£º
http://www.freebsddiary.org/postfix.php

PostfixµÄÐéÄâÓû§ÉèÖãº
/usr/local/share/doc/postfix/VIRTUAL_README

PostfixµÄһЩ¹Ù·½Îĵµ£¬½ÌÄãÈçºÎ¸úCyrus-SASL2ºÍCyrus-IMAP2ÕûºÏ£º
http://www.postfix.org/docs.html

FreeBSDÉÏÃæµÄPAMÅäÖãº
http://www.freebsd.org/doc/en_US.ISO8859-1.../pam/index.html

ÏÂÃæµÄÊÇLinuxΪĿ±êϵͳµÄ£¬ÎÒÒ²²Î¿¼¹ý¡£Èç¹ûÄú×ÐϸÔĶÁ¹ýËûÃǺͱ¾ÎÄ£¬¾ÍÃ÷°×FreeBSDµÄhierºÍPortϵͳµÄºÃ´¦¡£
Postfix-Cyrus-Web-cyradm-HOWTO£º
http://www.delouw.ch/linux/Postfix-Cyrus-W...html/index.html

Postfix + Cyrus-IMAP + Cyrus-SASL + MySQL + IMPµÄÖÐÎÄHOWTO
http://www.cngnu.org/technology/Postfix_I.html

Ç×£¬Äú»¹Ã»ÓеǼ,Çë[µÇ¼]»ò[×¢²á]ºóÔÙ½øÐÐÆÀÂÛ