freebsd:freebsd_9.0-releaseでcourier_mail_serverを使う

FreeBSD 9.0RでCourier Mail Serverを使う

  • FreeBSD 9.0-RELEASE
  • Courier Mail Server 0.65.3
  • Maildirで運用
  • Maildirは ~/Library/mail/メールアドレス/ に置く
  • ユーザーの標準メールのデータは ~/Library/mail/_local/Maildir に保存する
  • システムのメールサーバを標準のsendmailからCourier Mail Serverに置き換える。
  • ユーザーのメールをIMAPで読み書きする。
  • ユーザーのメールをIMAPsで読み書きする。
  • /etc/mail/aliases
    • メールエイリアスの設定ファイル。メールサーバに登録されているユーザーアカウントの別名(エイリアス)、転送(root宛のメールをadmin@〜にも送るとか)、メーリングリストの設定などが行える。
  • /etc/mail/mailer.conf
    • /usr/sbinにあるメール関連コマンド(実体はmailwrapperへのシンボリックリンク)と、実際のメール関連コマンドの対応表。/usr/sbin以下のメールコマンドが呼び出されると、mailwrapperはこの設定ファイルに基づいてメールコマンド本体を呼び出す。

portで一発。

cd /usr/ports/mail/courier
sudo make install

仮想メールボックスの利用を見据え、AUTH_PGSQLAUTH_USERDBあたりのコンフィグオプションを有効にする。 単にsendmailの置き換えだけなら、特に弄らなくてもいいと思う。

インストールの最後に「Would you like to activate Courier in /etc/mail/mailer.conf [n]?」と聞かれるので、yでmailer.confを置き換える。一応、Courier Mail Server用のmailer.confを掲載。

/etc/mail/mailer.conf
#
# Execute the Courier sendmail program, named /usr/local/bin/sendmail
#
sendmail	/usr/local/bin/sendmail
send-mail	/usr/local/bin/sendmail
mailq		/usr/local/bin/mailq
newaliases	/usr/local/sbin/makealiases

/usr/local/etc/courier/courierdで、Courier Mail Server全体の設定を行う。詳細はcourierdを参照。

ここでは変更した箇所のみを掲載する。

/usr/local/etc/courier/courierd
LANG=ja_JP.utf-8
DEFAULTDELIVERY=./Library/mail/_local/Maildir

また、

  • ログインアカウント名に大文字を含むユーザーがいる
  • 今後作る予定がある

場合は/usr/local/etc/courier/locallowercaseを消すか、別名にする。さもないと、そのユーザーはUnknownとなりメールが届かない。うちではlocallowercase.disableにリネームして対処した。

authlibの設定

portのインストールオプションで追加のAUTH_*オプション選んでいる場合、とりあえずauthpamを使うようにしておく。

/usr/local/etc/authlib/authdaemonrc
authmodulelist="authpam"
authmodulelistorig="authpam"

各ユーザーのホームディレクトリにMaildirを作成する。

cd ~
mkdir -p Library/mail/_local
maildirmake Library/mail/_local/Maildir

新規ユーザー用に/usr/share/skelにも、同様にMaildirのスケルトンを作成する。

cd /usr/share/skel
sudo mkdir -p Library/mail/_local
sudo maildirmake Library/mail/_local/Maildir

sendmailを止める。

sudo /etc/rc.d/sendmail stop

sendmailのメンテナンスルーチンを止める。

/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の無効化とCourier Mail Serverの有効化。

/etc/periodic.conf
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
 
courier_authdaemond_enable="YES"
courier_enable="YES"

Courier Mail Serverを起動。

sudo /usr/local/etc/rc.d/courier-authdaemond start
sudo /usr/local/etc/rc.d/courier start

もしくは、マシンを再起動する。

自分宛にメールを送ってみる。

$ mail Decomo
Subject: Courier Mail Server test
send to Decomo
.
EOT

ログが↓な風になっていれば、送信成功。

Mar 30 22:23:59 Hoge-host courierd: newmsg,id=00000049.000000004F75B3EF.000006EA: dns; localhost (localhost [127.0.0.1])
Mar 30 22:23:59 Hoge-host courierd: started,id=00000049.000000004F75B3EF.000006EA,from=<Decomo@Hoge-host>,module=local,host=Decomo!!1001!1001!/home/Decomo!!,addr=<Decomo>
Mar 30 22:23:59 Hoge-host courierd: Waiting.  shutdown time=none, wakeup time=none, queuedelivering=1, inprogress=1
Mar 30 22:24:00 Hoge-host courierlocal: id=00000049.000000004F75B3EF.000006EA,from=<Decomo@Hoge-host>,addr=<Decomo@Hoge-host>,size=405,success: Message delivered.
Mar 30 22:24:00 Hoge-host courierd: completed,id=00000049.000000004F75B3EF.000006EA
Mar 30 22:24:00 Hoge-host courierd: Waiting.  shutdown time=Fri Mar 30 23:13:47 2012, wakeup time=Fri Mar 30 23:13:47 2012, queuedelivering=0, inprogress=0

muttで受信出来たか確認(mailコマンドはMaildirに対応しておらず、No mailになってしまうので注意)。

良い子の皆は、root宛のメール転送先を既に適切に設定していると思うが、俺は設定を忘れていたのでここで設定しておく。

/etc/aliases
root:	Decomo

エイリアスデータベースを更新。

sudo newaliases

/usr/local/etc/courier/imapdを編集する。

/etc/periodic.conf
IMAPDSTART=YES
MAILDIRPATH=Library/mail/_local/Maildir

IPアドレスはNICに割り当てられているアドレスそのものを指定しないと、外部からのIMAP接続要求をListen出来ないので要注意。

Thunderbirdで接続してみる。


Courier Mail ServerのIMAPはINBOXをルート名前空間とするので、デフォルトでは送信済みトレイやゴミ箱が受信トレイにぶら下がる形となる。

「アカウントの設定>サーバ設定>詳細>IMAPサーバディレクトリ」に「INBOX」というように、ルート名前空間を設定することで受信トレイと他のフォルダが同一階層で扱う事が出来る。

単なるIMAPだと、パスワード・メール本文ともに平文で通信路を流れ、非常に宜しくないのでIMAPsを使うようにする。

秘密鍵の生成

# openssl genrsa -aes256 2048 > imapd.key
Generating RSA private key, 2048 bit long modulus
..........................................................................+++
......................................................+++
e is 65537 (0x10001)
Enter pass phrase:
Verifying - Enter pass phrase:

証明書署名要求の生成

# openssl req -new -key imapd.key > imapd.csr
Enter pass phrase for imapd.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Kanagawa
Locality Name (eg, city) []:Yokohama
Organization Name (eg, company) [Internet Widgits Pty Ltd]:PRODUCTION KusoGA
Organizational Unit Name (eg, section) []:CA
Common Name (eg, YOUR name) []:Hoge-host
Email Address []:メールアドレス
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

自己証明書の生成

# openssl x509 -in imapd.csr -days 3650 -req -signkey imapd.key > imapd.crt
Signature ok
subject=/C=JP/ST=Kanagawa/L=Yokohama/O=PRODUCTION KusoGA/OU=CA/CN=Hoge-host/emailAddress=メールアドレス
Getting Private key
Enter pass phrase for imapd.key:
<em>aaaa</em>

秘密鍵のパスワードを解除

パスワードが掛かったままだとCourier Mail Server起動時に、入力を要求されるので予め解除する。

sudo mv imapd.key imapd.pass.key
sudo openssl rsa -in imapd.pass.key -out imapd.key

秘密鍵と証明書の結合

Courier Mail Serverでは秘密鍵と証明書を結合したファイルを使う。ついでにSSL関連ファイルのパーミッションを落とす(特に秘密鍵は取り扱いに注意すること)。

cat imapd.key imapd.crt > imapd.pem
chmod 400 imapd.key
chmod 400 imapd.csr
chmod 400 imapd.crt
chmod 400 imapd.pem

サーバの設定

imapd-sslの編集。IMAP over SSLとSTARTTLSの二本立てとし、かつ生のIMAPは繋がらないようにする。

/usr/local/etc/courier/imapd-ssl
IMAPDSSLSTART=YES
IMAPDSTARTTLS=YES
IMAP_TLS_REQUIRED=1
TLS_CERTFILE=/usr/local/etc/courier/imapd.pem
MAILDIRPATH=Library/mail/_local/Maildir

生のIMAPを許容するなら、IMAP_TLS_REQUIREDを0にする。また、STARTTLSそのものが不要ならば/usr/local/etc/courier/imapIMAPDSTARTをNOにする。逆に、IMAP over SSLが不要ならIMAPDSSLSTARTをNOにする。

  • freebsd/freebsd_9.0-releaseでcourier_mail_serverを使う.txt
  • 最終更新: 2020-12-03 19:36
  • by Decomo