2012年8月25日 星期六

使用 Ubuntu 安裝郵件伺服器 (Mail Server):Postfix + Dovecot + Openwebmail

使用 Ubuntu 安裝郵件伺服器 (Mail Server):Postfix + Dovecot + Openwebmail

在 DNS Server 的文章提到二個域名 (domain name):

    www.example.com.tw
    mail.example.com.tw

這篇文章的內容與 mail.example.com.tw 有關;至於 www.example.com.tw 上一篇已經說明。

架設郵件伺服器 (mail server) 需要 Postfix 和 Dovecot 二個套件。

    Postfix 負責 SMTP
    Dovecot 負責 POP3 和 IMAP

選擇 Dovecot 的理由是 Dovecot 同時支援 Maildir 和 mbox;而 Openwebmail 只支援 mbox。

Ubuntu Server 從 9.10 版開始提供一支套件 Dovecot-postfix,這支套件整合了 Postfix 與 Dovecot 的設定環境,使設定更簡單。

環境

我們希望郵件伺服器 Outlook Express 可以收發郵件,同時也提供網頁郵件服務。以下是我們的假設環境:

    郵件伺服器:Postfix
    POP3 伺服器:Dovecot-pop3d
    IMAP 伺服器:Dovecot-imapd
    信箱格式:mbox
    認證:使用 Ubuntu Server 的帳號及密碼
    網頁郵件服務:Openwebmail

Postfix

Ubuntu Server 常用的郵件伺服器是 Postfix。

安裝

安裝 Postfix 的指令如下:

    sudo apt-get install postfix

安裝過程中,畫面會要求你設定你的環境。

        Internet Site
        example.com.tw

啟動停止 Postfix 的指令如下:

    sudo /etc/init.d/postfix start #啟動 Postfix
    sudo /etc/init.d/postfix stop #停止 Postfix
    sudo /etc/init.d/postfix restart #重新啟動 Postfix

組態

後面我們要安裝 dovecot-postfix 套件,安裝 dovecot-postfix 會修改 Postfix 的 main.cf 檔案,這裡的 main.cf 檔案是被 dovecot-postfix 更改後的檔案。

Postfix 主要的組態設定檔是 /etc/postfix/main.cf。vi 編輯 main.cf 的指令如下:

    sudo vi /etc/postfix/main.cf

main.cf 的內容如下:

    第 9行 將 (Ubuntu) 拿掉
    第21行到第25行 #註記
    第34行 新增 mail.example.com.tw
    第41行 #註記,因為這裡使用 mbox
    第54行 #註記
    第56行到第61行 #註記

    # See /usr/share/postfix/main.cf.dist for a commented, more complete version
    
    
    # Debian specific: Specifying a file name will cause the first
    # line of that file to be used as the name. The Debian default
    # is /etc/mailname.
    #myorigin = /etc/mailname
    
    smtpd_banner = $myhostname ESMTP $mail_name
    biff = no
    
    # appending .domain is the MUA's job.
    append_dot_mydomain = no
    
    # Uncomment the next line to generate "delayed mail" warnings
    #delay_warning_time = 4h
    
    readme_directory = no
    
    # TLS parameters
    #smtpd_tls_cert_file = /etc/ssl/certs/ssl-mail.pem
    #smtpd_tls_key_file = /etc/ssl/private/ssl-mail.key
    #smtpd_use_tls = yes
    #smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
    #smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
    
    # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
    # information on enabling SSL in the smtp client.
    
    myhostname = dns.example.com.tw
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases
    myorigin = /etc/mailname
    mydestination = mail.example.com.tw, example.com.tw, dns.example.com.tw, localhost.example.com.tw, localhost
    relayhost =
    mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
    mailbox_size_limit = 0
    recipient_delimiter = +
    inet_interfaces = all
    
    #home_mailbox = Maildir/
    
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_type = dovecot
    smtpd_sasl_path = private/dovecot-auth
    smtpd_sasl_authenticated_header = yes
    smtpd_sasl_security_options = noanonymous
    smtpd_sasl_local_domain = $myhostname
    broken_sasl_auth_clients = yes
    
    smtpd_recipient_restrictions = reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
    smtpd_sender_restrictions = reject_unknown_sender_domain
    
    #mailbox_command = /usr/lib/dovecot/deliver -c /etc/dovecot/conf.d/01-dovecot-postfix.conf -n -m "${EXTENSION}"
    
    #smtp_use_tls = yes
    #smtpd_tls_received_header = yes
    #smtpd_tls_mandatory_protocols = SSLv3, TLSv1
    #smtpd_tls_mandatory_ciphers = medium
    #smtpd_tls_auth_only = yes
    #tls_random_source = dev:/dev/urandom

重新啟動 Postfix。
Dovecot

Ubuntu Server 常用的 POP3 Server, IMAP Server 是 dovecot。

安裝

安裝 Dovecot POP3, IMAP Server 的指令如下:

    sudo apt-get install dovecot-pop3d dovecot-imapd

安裝 dovecot-postfix 的指令如下:

    sudo apt-get install dovecot-postfix

啟動停止 Dovecot 的指令如下:

    sudo /etc/init.d/dovecot start #啟動 Dovecot
    sudo /etc/init.d/dovecot stop #停止 Dovecot
    sudo /etc/init.d/dovecot restart #重新啟動 Dovecot

組態

安裝 dovecot-postfix 後,/etc/dovecot 目錄的 dovecot.conf 被 # 註記了。新的組態檔的位置在:

    Ubuntu Server 9.10 在 /etc/dovecot 目錄裡,多了 dovecot-postfix.conf 檔案。
    Ubuntu server 10.04 LTS 在 /etc/dovecot/conf.d 目錄裡,多了 01-dovecot-postfix.conf 檔案。

編輯組態檔案的指令如下:

    sudo vi /etc/dovecot/dovecot-postfix.conf # Ubuntu Server 9.10
    # or
    sudo vi /etc/dovecot/conf.d/01-dovecot-postfix.conf # Ubuntu Server 10.04 LTS

dovecot-postfix.conf 或 01-dovecot-postfix.conf 檔案內容如下:

    第 2行 將 imaps pop3s managesieve 用 # 註記
    第 3行 disable_plaintext_auth = no,使用 Ubuntu 帳號、密碼
    第 4行 ssl = no,不使用 SSL 認證
    第 5行到第 7行 #註記,不使用 SSL 認證
    第 8行 mail_location = maildir:~/Maildir #註記,不使用 Maildir
    第 9行 新增 mail_location = mbox:~/mail:INBOX=/var/spool/mail/%u # (for mbox),使用 mbox

    # Some general options
    protocols = imap pop3 # imaps pop3s managesieve
    disable_plaintext_auth = no
    ssl = no
    #ssl_cert_file = /etc/ssl/certs/ssl-mail.pem
    #ssl_key_file = /etc/ssl/private/ssl-mail.key
    #ssl_cipher_list = ALL:!LOW:!SSLv2:ALL:!aNULL:!ADH:!eNULL:!EXP:RC4+RSA:+HIGH:+MEDIUM
    #mail_location = maildir:~/Maildir
    mail_location = mbox:~/mail:INBOX=/var/spool/mail/%u # (for mbox)
    auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
    
    # IMAP configuration
    protocol imap {
    mail_max_userip_connections = 10
    imap_client_workarounds = outlook-idle delay-newmail
    }
    
    # POP3 configuration
    protocol pop3 {
    mail_max_userip_connections = 10
    pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
    }
    
    # LDA configuration
    protocol lda {
    postmaster_address = postmaster
    mail_plugins = sieve
    quota_full_tempfail = yes
    deliver_log_format = msgid=%m: %$
    rejection_reason = Your message to <%t> was automatically rejected:%n%r
    }
    
    # Plugins configuration
    plugin {
    sieve=~/.dovecot.sieve
    sieve_dir=~/sieve
    }

重新啟動 Dovecot。

測試

測試 SMTP port 25,輸入下列指令

    sudo telnet mail.example.com.tw 25

Postfix 回應顯示如下:

    Trying 192.168.0.10...
    Connected to dns.example.com.tw.
    Escape character is '^]'.
    220 dns.example.com.tw ESMTP Postfix

接著輸入下列指令

    ehlo mail.example.com.tw

Postfix 回應顯示如下:

第 5行 250-AUTH PLAIN LOGIN
第 6行 250-AUTH=PLAIN LOGIN

    250-dns.example.com.tw
    250-PIPELINING
    250-SIZE 10240000
    250-ETRN
    250-AUTH PLAIN LOGIN
    250-AUTH=PLAIN LOGIN
    250-ENHANCEDSTATUSCODES
    250-8BITMIME
    250 DSN

完成收發信的認證設定。
Openwebmail

網頁郵件套件我們選擇 Openwebmail。

Ubuntu 沒有提供 Openwebmail 套件,B2D 中文 Linux 計劃1有提供。

修改 /etc/apt/sources.list

    sudo vi /etc/apt/sources.list

在 sources.list 檔案最後面加入以下這行

    deb ftp://debian.tnc.edu.tw/pub1 b2d/

Ubuntu Server 10.04 LTS 比較麻煩,套件庫裡的 libmd5-perl 有問題,無法直接安裝。手動安裝 libmd5-perl 的指令如下:

第 1行 下載 libmd5-perl_2.03-1_all.deb 套件。
第 2行 安裝 libmd5-perl_2.03-1_all.deb 套件。

    sudo wget http://mirrors.kernel.org/ubuntu/pool/universe/libm/libmd5-perl/libmd5-perl_2.03-1_all.deb
    sudo dpkg -i libmd5-perl_2.03-1_all.deb

安裝

安裝 Openwebmail 的指令如下:

    sudo apt-get update
    sudo apt-get install openwebmail

安裝後不要忘記將 /etc/apt/sources.list 檔案裡新增的 deb ftp://debian.tnc.edu.tw/pub1 b2d/ 註記起來。

    # deb ftp://debian.tnc.edu.tw/pub1 b2d/

更新 auth_unix.pl

B2D 版本已經是很舊的版本 (2006/10/20 以前的版本,但不包括 1020 版),因為當時尚未改成支援 blowfish,所以必須下載 auth_unix.pl,把它拷貝到 /usr/lib/cgi-bin/openwebmail/auth,覆蓋掉原有的 auth_unix.pl,否則將無法正常登入 Openwebmail。會出現下面的錯誤訊息。

    --------------------------------------------------------------------------------------------------------------
    Can't locate Crypt/Eksblowfish/Bcrypt.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl /usr/lib/cgi-bin/openwebmail) at /usr/lib/cgi-bin/openwebmail/auth/auth_unix.pl line 15.
    BEGIN failed--compilation aborted at /usr/lib/cgi-bin/openwebmail/auth/auth_unix.pl line 15.
    --------------------------------------------------------------------------------------------------------------

下載 auth_unix.pl 指令如下:

    sudo wget ftp://ftp3.tnc.edu.tw/b2d/openwebmail/auth_unix.pl

覆蓋掉原有的 auth_unix.pl 指令如下:

    sudo cp auth_unix.pl /usr/lib/cgi-bin/openwebmail/auth/

組態

登入 Openwebmail 前,先修改 openwebmail.conf 檔案,編輯 openwebmail.conf 指令如下:

    sudo vi /usr/lib/cgi-bin/openwebmail/etc/openwebmail.conf

openwebmail.conf 檔案內容如下:

    第13行 設定域名,這裡是 example.com.tw
    第15行 病毒檢查
    第16行 垃圾郵件檢查
    第17行 垃圾郵件學習
    第18行 網頁硬碟服務
    第19行 終端機功能
    第21行 郵件語系
    第22行 ICON 設定
    第25行到第29行 郵件簽名

    #
    # Open WebMail configuration file
    #
    # This file contains just the overrides from defaults/openwebmail.conf,
    # please make all changes to this file.
    #
    # This file sets options for all domains and all users.
    # To set options on per domain basis, please put them in sites.conf/domainname
    # To set options on per user basis, please put them in users.conf/username
    #
    # Please refer to openwebmail.conf.help for the description of each option
    #
    domainnames example.com.tw
    
    enable_viruscheck yes
    enable_spamcheck yes
    enable_learnspam yes
    enable_webdisk yes
    enable_sshterm no
    
    default_locale zh_TW.Big5
    default_iconset Cool3D.Chinese.Traditional
    default_fscharset none
    
    <default_signature>
    --
    Open WebMail Project (http://openwebmail.org)
    
    </default_signature>

記得在修改 openwebmail.conf 之後,別忘了執行

    sudo /usr/lib/cgi-bin/openwebmail/openwebmail-tool.pl --init

登入 Openwebmail

開啟瀏覽器,網址列輸入

    http://192.168.0.10/openwebmail

使用者第一次登入帳戶要設定基本資料。

沒有留言:

張貼留言