Postfix 2.9.2 + Cyrus IMAPD 2.4.16

インストールメモ。

環境

  • マシン: さくらVPS 2Gコース
  • OS: FreeBSD 9.0-RELEASE

Perl 5.14.2インストール

  1.  portsから。
    cd /usr/ports/lang/perl5.14
    make install clean distclean

    ※CyrusやPostfixより先に入れておかないと、古いバージョンがインストールされたので先に新しいものを入れておいた。

    なぜかmake testでエラーが出る。

    Test Summary Report
    -------------------
    ../cpan/Archive-Extract/t/01_Archive-Extract.t                  (Wstat: 25088 Tests: 1560 Failed: 98)
      Failed tests:  87, 89-94, 98, 100-105, 111, 113-118, 122
                    124-129, 255, 257-262, 266, 268-273, 495
                    497-502, 506, 508-513, 663, 665-670, 674
                    676-681, 759, 761-766, 770, 772-777, 831
                    833-838, 842, 844-849
      Non-zero exit status: 98
    ../ext/POSIX/t/posix.t                                          (Wstat: 0 Tests: 66 Failed: 0)
      TODO passed:   11
    Files=2089, Tests=455957, 1506 wallclock secs (170.94 usr 11.69 sys + 1120.25 cusr 92.16 csys = 1395.04 CPU)
    Result: FAIL
    *** Error code 98
    
    Stop in /usr/ports/lang/perl5.14/work/perl-5.14.2.
    *** Error code 1
    
    Stop in /usr/ports/lang/perl5.14.

    5.12をインストールしても同様。
    5.14のソースコードを直接ダウンロードしてsh Configureしたら、エラーは減ったけれども根絶はできない。
    諦めてそのままインストール。

    cf. 「Perl 5.12 -> 5.14更新」(千年の風に吹かれて)
    cf. 「運用ネタ (FreeBSD) perl5.14へのバージョンアップ」(世迷言)

Postfix 2.9.2インストール

  1.  portsから。
    cd /usr/ports/mail/postfix
    make install clean

    オプション指定は次のようにした。

    PCRE=on "Perl Compatible Regular Expressions"
    SASL2=on "Cyrus SASLv2 (Simple Auth. and Sec. Layer)"
    DOVECOT=off "Dovecot 1.x SASL authentication method"
    DOVECOT2=off "Dovecot 2.x SASL authentication method"
    SASLKRB5=off "If your SASL req. Kerberos5, select this"
    SASLKMIT=off "If your SASL req. MIT Kerberos5, select this"
    TLS=on "Enable SSL and TLS support"
    BDB=on "Berkeley DB (uses WITH_BDB_VER)"
    MYSQL=off "MySQL maps (uses WITH_MYSQL_VER)"
    PGSQL=off "PostgreSQL maps (uses DEFAULT_PGSQL_VER)"
    SQLITE=off "SQLite maps"
    OPENLDAP=off "OpenLDAP maps (uses WITH_OPENLDAP_VER)"
    LDAP_SASL=off "Enable OpenLDAP client-to-server SASL auth"
    CDB=off "CDB maps lookups"
    NIS=off "NIS maps lookups"
    VDA=off "VDA (Virtual Delivery Agent 32Bit)"
    TEST=off "SMTP/LMTP test server and generator"
    SPF=off "SPF support (via libspf2 1.2.x)"
    INST_BASE=off "Install into /usr and /etc/postfix"

    Cyrus SASLのオプションは次のようにした。

    BDB=on "Use Berkeley DB"
    MYSQL=off "Use MySQL"
    PGSQL=off "Use PostgreSQL"
    SQLITE=off "Use SQLite"
    SQLITE3=off "Use SQLite3"
    DEV_URANDOM=off "Use /dev/urandom"
    ALWAYSTRUE=off "Enable the alwaystrue password verifier"
    KEEP_DB_OPEN=off "Keep handle to Berkeley DB open"
    OBSOLETE_CRAM_ATTR=on "Enable cmusaslsecretCRAM-MD5 property"
    AUTHDAEMOND=on "Enable use of authdaemon"
    LOGIN=on "Enable LOGIN authentication"
    PLAIN=on "Enable PLAIN authentication"
    CRAM=on "Enable CRAM-MD5 authentication"
    DIGEST=on "Enable DIGEST-MD5 authentication"
    NTLM=on "Enable NTLM authentication"
    OTP=off "Enable OTP authentication"
    SCRAM=on "Enable SCRAM authentication"
  2. /etc/rc.confに次の行を追加。
    postfix_enable="YES"
    sendmail_enable="NO"
    sendmail_submit_enable="NO"
    sendmail_outbound_enable="NO"
    sendmail_msp_queue_enable="NO"
  3. /etc/periodic.confに次の行を追加。(ファイルがなければ作成する。)
    daily_clean_hoststat_enable="NO"
    daily_status_mail_rejects_enable="NO"
    daily_status_include_submit_mailq="NO"
    daily_submit_queuerun="NO"
  4. 動作中のsendmailを停止。
    /etc/rc.d/sendmail stop
  5. /usr/local/etc/postfix/main.cfを次のように編集。
    mydomain = domain.name.jp
    myorigin = $mydomain
    mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
    unknown_local_recipient_reject_code = 550
    mynetworks_style = host
    mailbox_transport = lmtp:unix:/var/imap/socket/lmtp
    fallback_transport = lmtp:unix:/var/imap/socket/lmtp
    debugger_command =
             PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
             xxgdb $daemon_directory/$process_name $process_id & sleep 5
    allow_mail_to_commands = alias,forward,include
    notify_classes = bounce,delay,policy,protocol,resource,software
    inet_protocols = ipv4
    
    smtpd_sasl_auth_enable=yes
    smtpd_sasl_local_domain = $myhost
    smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
    smtpd_sasl_security_options = noanonymous
    smtp_sasl_mechanism_filter = plain, login
    broken_sasl_auth_clients = yes

    受信するメールのドメインを、サーバーのFQDNとは別に設定しているため、mydomainのみ変更している。myhostnameまで変更すると、SMTP-authで認証に失敗する。saslpasswd2で設定するホスト名は、ここで設定するホスト名でなくサーバー起動時に指定されたものを使うため。

  6. /usr/local/etc/postfix/master.cfを編集して次の行を有効にする。プロバイダのOP25B対策でサブミッションポートを開けるため。
    submission inet n       -       n       -       -       smtpd
  7. postfixを起動。
    /usr/local/etc/rc.d/postfix start

cf. 「排除率99.97%のスパムメール対策 for postfix」 (CMF)

Cyrus IMAP 2.4.16インストール

  1. portsからインストール。
    cd /usr/ports/mail/cyrus-imapd24
    make install
  2. /etc/rc.confに次の行を追加。
    imapd_enable="YES"
  3. /usr/local/etc/imapd.confを開き、次の行を編集。
    partition-default: /usr/local/spool/imap
    lmtpsocket: /var/imap/socket/lmtp
  4. spoolの場所を変更してあるので、作成しておく。
    mkdir -p /usr/local/spool/imap
  5. ディレクトリ設定の初期化コマンドを実行。
    /usr/local/cyrus/bin/mkimap
  6. /etc/syslog.confに次の行を追加。
    local6.* /var/log/cyrus/imapd.log

    cf. 「(FreeBSD) cyrus-imapdのログが/var/log/messagesにたくさん出すぎ ~ /etc/syslog.confで調節」(ttt)

  7. オレオレ証明書を作成。Common Nameにドメイン名を入れる他は、何を聞かれてもすべてエンターで良い。
    openssl req -new -x509 -nodes -out /var/imap/server.pem -keyout /var/imap/server.pem -days 3650
    
  8. /usr/local/etc/imapd.confを次のように編集。
    configdirectory: /var/imap
    partition-default: /usr/local/spool/imap
    admins:cyrus-admin
    sieveusehomedir: true
    sievedir: /var/imap/sieve
    sasl_pwcheck_method: saslauthd
    tls_cert_file: /var/imap/server.pem
    tls_key_file: /var/imap/server.pem
    lmtpsocket: /var/imap/socket/lmtp
  9. /etc/servicesに次の行を追加。
    lmtp 24/tcp
  10. imapdを起動。
    /usr/local/etc/rc.d/imapd onestart
  11. メール管理者アカウント (cyrus-admin) を追加。
    /usr/local/sbin/saslpasswd2 -c cyrus-admin
  12. メールユーザーを追加。
    cyradm --user cyrus-admin localhost
    cm user.ユーザー名

    ※先にimapdを起動しておかないと、cyradmを実行してもエラーとなるので注意。

  13. OS再構築時にsendmamilをインストールしないよう、/etc/make.confに次の行を追加。
    NO_SENDMAIL=true

cf. 「CyrusでIMAPサーバを構築する」(@IT)
cf. 「NetBSD pkgsrc/cyrus-imapd」 (Software Installation by Makoto Fujiwara)
cf. 「Cyrus SASL の使い方」 (Obache Watching pkgsrc)
cf. 「[Postfix] SMTP Auth for submission port (cyrus-sasl2 + BDB3)」 (けーがーでん)
cf. 「SMTP Authenticationの導入(Postfix編)」 (パソコンおやじ)

※FreeBSD 8.3上にCyrus IMAPをインストールしたら、cyradm localhostを実行するとSegmentation Faultで落ちて、Perlのコアダンプが残される。Perlのバージョンを変更したり、いろいろ試したものの解決せず。FreeBSD 9.0にして再インストールしたら問題発生しなくなった。今からOS入れるのに8.3にする理由もないので、これでよしとする。

SASL認証用のユーザ設定

  1. メールユーザごとにSASL用パスワードを登録。
    saslpasswd2 username
  2. 登録できているか確認するには、sasldblistusers2コマンドを使用する。
    sasldblistusers2
    username@sample.domain.jp: userPassword
  3. PostfixとCyrus IMAPを再起動。
    /usr/local/etc/rc.d/postfix restart
    /usr/local/etc/rc.d/imapd onerestart
タイトルとURLをコピーしました