インストールメモ。
環境
- マシン: さくらVPS 2Gコース
- OS: FreeBSD 9.0-RELEASE
Perl 5.14.2インストール
- 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インストール
- 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"
- /etc/rc.confに次の行を追加。
postfix_enable="YES" sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO"
- /etc/periodic.confに次の行を追加。(ファイルがなければ作成する。)
daily_clean_hoststat_enable="NO" daily_status_mail_rejects_enable="NO" daily_status_include_submit_mailq="NO" daily_submit_queuerun="NO"
- 動作中のsendmailを停止。
/etc/rc.d/sendmail stop
- /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で設定するホスト名は、ここで設定するホスト名でなくサーバー起動時に指定されたものを使うため。
- /usr/local/etc/postfix/master.cfを編集して次の行を有効にする。プロバイダのOP25B対策でサブミッションポートを開けるため。
submission inet n - n - - smtpd
- postfixを起動。
/usr/local/etc/rc.d/postfix start
cf. 「排除率99.97%のスパムメール対策 for postfix」 (CMF)
Cyrus IMAP 2.4.16インストール
- portsからインストール。
cd /usr/ports/mail/cyrus-imapd24 make install
- /etc/rc.confに次の行を追加。
imapd_enable="YES"
- /usr/local/etc/imapd.confを開き、次の行を編集。
partition-default: /usr/local/spool/imap lmtpsocket: /var/imap/socket/lmtp
- spoolの場所を変更してあるので、作成しておく。
mkdir -p /usr/local/spool/imap
- ディレクトリ設定の初期化コマンドを実行。
/usr/local/cyrus/bin/mkimap
- /etc/syslog.confに次の行を追加。
local6.* /var/log/cyrus/imapd.log
cf. 「(FreeBSD) cyrus-imapdのログが/var/log/messagesにたくさん出すぎ ~ /etc/syslog.confで調節」(ttt)
- オレオレ証明書を作成。Common Nameにドメイン名を入れる他は、何を聞かれてもすべてエンターで良い。
openssl req -new -x509 -nodes -out /var/imap/server.pem -keyout /var/imap/server.pem -days 3650
- /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
- /etc/servicesに次の行を追加。
lmtp 24/tcp
- imapdを起動。
/usr/local/etc/rc.d/imapd onestart
- メール管理者アカウント (cyrus-admin) を追加。
/usr/local/sbin/saslpasswd2 -c cyrus-admin
- メールユーザーを追加。
cyradm --user cyrus-admin localhost cm user.ユーザー名
※先にimapdを起動しておかないと、cyradmを実行してもエラーとなるので注意。
- 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認証用のユーザ設定
- メールユーザごとにSASL用パスワードを登録。
saslpasswd2 username
- 登録できているか確認するには、sasldblistusers2コマンドを使用する。
sasldblistusers2 username@sample.domain.jp: userPassword
- PostfixとCyrus IMAPを再起動。
/usr/local/etc/rc.d/postfix restart /usr/local/etc/rc.d/imapd onerestart