FreeBSD + Postfix & Maildir + Courier-imap + Squirrelmail

Description :

        小弟於 上安裝 Postfix + Courier-imap + Squirrelmail 郵件伺服器,採取 Maildir 的架構將使用者的信件分門別類的放置在 /home/User/Maildir 目錄下,有別於過去傳統所採用的 MailBox 方式,它是將 Mail 堆疊於 /var/spool/User 下。

        過去我一直使用 MailBox 的方式將郵件堆疊到 /var/spool/User 上,這樣的方式有個蠻大的缺點,就是當使用者的郵件空間容量擴大時你想看看會發生甚麼狀況?當單一檔案超過 1G 時必定造成 Mial Server 整體效能的下降,以及接收郵件時若突然斷線或中斷時 Mail 又得重新再接收一次,看來這樣的架構似乎已經不符合現今的需求,因此我改採 Maildir 的方式來架設 Mail Server讓每一封郵件都獨立為單一檔案存放於自己的家目錄下,便可提高 Mail Server 的效能以及無限擴充郵件使用者的空間

        Courier-imap 是一套預設就支援 Maildir 的 pop3 及 imap 軟體,它也同時支援 pop3s 及 imaps 這兩個 Service,因此 Mail Server 在選擇使用 Maildir 架構時,我們當然首選 Courier-imap 摟。

Environment :

            硬體:i386 PC Intel P3 500
            記憶體網卡:
512M RAM 
            作業系統:
FreeBSD 6.0 Release

Setp 1. Installing Postfix

#vi /etc/rc.conf       
#  拿掉預設啟動 sendmail

sendmail_enable=”NONE”

#cd /usr/ports/mail/postfix
#make install

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

myhostname = ms2.ntut.idv.tw
mydomain = ntut.idv.tw
alias_maps = hash:/usr/local/etc/postfix/aliases     # aliase 別名是一定要設的
home_mailbox = Maildir/        #  改用 Maildir 格式存放 mail
開啟這行時若使用者收到第一封 mail 時會就會自動產生 /home/User/Maildir 目錄及 new tmp cur 這三個資料夾

disable_vrfy_command = yes    #  防止別人測試你的本機郵件用戶是否存在   
mailbox_size_limit = 2048000000       # mailbox 的空間大小限制 2G
也可以使用 disk quota 來限制
smtpd_recipient_limit =300    #  對同一封郵件的收件人數目限制,最多同一封信件可發給 300 人
message_size_limit = 10240000      # 單一信件最大容量 10M

#postalias /usr/local/etc/postfix/aliases       
#  產生 aliases.db 檔

#exit       
# 先跳出再進入 root 才可不指定路徑直接 start postfix
$su
#posfix start       
# 手動開啟 postfix 25 port 服務

Setp 2. Installing Courier-imap

#cd /usr/ports/mail/courier-imap       
#   因為採用 FreeBSD 本機上的帳號及密碼認證所以不選其他種類的 AUTH
#make install

       Options for courier-imap 4.0.6_1,1

 [X] OPENSSL      Build with OpenSSL support 
 [ ] FAM          Build in fam support for IDLE command
 [ ] TRASHQUOTA   Include deleted mails in the quota 
 [ ] GDBM         Use gdbm db instead of system bdb
 [ ] IPV6         Build with IPv6 support 
 [ ] AUTH_LDAP    LDAP support
 [ ] AUTH_MYSQL   MySQL support
 [ ] AUTH_PGSQL   PostgreSQL support
 [ ] AUTH_USERDB  Userdb support
 [ ] AUTH_VCHKPW  Vpopmail/vchkpw support

#cd /usr/local/etc/courier-imap
#cp pop3d.cnf.dist pop3d.cnf
#cp imapd.cnf.dist imapd.cnf       
#   設定 cert 的內容以方便我們產生 ssl 加密認證,如果不使用 imaps 993 port 或 pop3s 995 port 可省掉這個動作

RANDFILE = /usr/local/share/courier-imap/pop3d.rand

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

The [ req_dn ] should look like:

    [ req_dn ]
    C=countryName Two letters!
    ST=stateOrProvinceName
    L=localityName
    O=organizationName
    OU=OrganizationalUnitName
    CN=commonName
    emailAddress=emailAddress

[ cert_type ]
nsCertType = server

#/usr/local/sbin/mkimapdcert        #   產生安全登入認證的 imapd.pem 及 pop3d.pem 檔放置於 /usr/local/share/courier-iamp 下
#/usr/local/sbin/mkpop3dcert

#vi /etc/rc.conf        #  設定預設開機啟動程式

postfix_enable=”YES”
courier_authdaemond_enable=”YES”
courier_imap_pop3d_enable=”YES”
courier_imap_imapd_enable=”YES”
courier_imap_imapd_ssl_enable=”YES”
courier_imap_pop3d_ssl_enable=”YES”

#reboot        #   重開機

# sockstat -l4        #  測試所開啟的服務

USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS     
root     master     520   11 tcp4   *:25                  *:*
root     couriertcp 454   3  tcp4   *:110                 *:*
root     couriertcp 443   3  tcp4   *:995                 *:*
root     couriertcp 432   3  tcp4   *:143                 *:*
root     couriertcp 420   3  tcp4   *:993                 *:*
root     sshd       377   4  tcp4   *:22                  *:*
root     syslogd    264   6  udp4   *:514                 *:*

#telnet localhost 110        #  測試 pop3 110 port 有無啟動,及使用者可否登入
>user jim
>pass xxxx
>list
>stat
>quit
+OK Bye-bye.

Setp 3. Installing Apache2 + PHP4 +SquirrelMail

#cd /usr/ports/www/apache2       
#  詳細的設定就不再贅述請參考 Apache20 + MySQL41 + PHP4
#make install
#cd /usr/ports/www/php4
#make install

#cd /usr/ports/www/php4-extension
#make install

#cd /usr/ports/mail/squirrelmail
#make install

#cd /usr/local/www/data-dist
#ln -s ../squirrelmail  webmail       
# 建立 webmail 連結檔
#cd webmail
#./configure       
#  開始設定你的 config.php 檔

SquirrelMail Configuration : Read: config.php (1.4.0)
———————————————————
Main Menu –
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database
10. Languages

D.  Set pre-defined settings for specific IMAP servers

C   Turn color on
S   Save data
Q   Quit

Command >>

 http://ms2.ntut.idv.tw/webmail/           #  開個 Browse 輸入上面的路徑即可進入小松鼠 webmail 的登入畫面

Reference:

http://ezine.daemonnews.org/200308/courier-imap.html
http://www.inter7.com/courierimap.html
http://www.asdf.dk/text/mbox2maildir.html
http://karmak.org/2003/courier-imap/
http://mutt.sourceforge.net/imap/

Add:

若出現 Webmail 無法登入可能是還未產生 /home/User/Maildir 也可以手動製作 User 的 Maildir/

# cd /home/User
# maildirmake Maildir
# chown -R User:User Maildir
# chmod -R 750 Maildir

 来自:http://freebsd.ntut.idv.tw/document/postfix_maildir_courier-iamp_squirrelmail.html

原创文章,转载请注明: 转载自PT Ubuntu Blog

本文链接地址: http://www.ptubuntu.com/2008/12/625.html

Share

{ 发表评论? }

  1. ugg boots on sale

    发现新大陆,还希望发现更多信息.嘻嘻,谢谢博主了.

  2. North Face

    谢谢提供

  3. Coach Factory

    Very nice article and straight to the point.

  4. tory burch

    This article is so beneficial effect, to write such an article is good,thank you

  5. jimmy choo online

    This is a wonderful article,I like it very much.

  6. yves saint laurent shoes

    Thank you for your article. It’s worth to read.

  7. Moncler Outlet

    beneficial effect, to write such an article is good,thank you

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


Verify Code   If you cannot see the CheckCode image,please refresh the page again!