| Pocketstudio.jp :: Logbook :: Linux :: Fedora Core 3のメモ |
■ /linux/FedoraCore3/ FedoraCore3 標準の Cyrus-imapd,POP3,Postfix によるメールサーバ構築方法(POP3,POP3S,IMAP,SMTPS,SMTP AUTH)FedoraCore ではメールサーバとして Cyrus-imapd がセットアップされています。MTA(Mail Transfer Agent=メール配達プログラム) は Postfix もセットアップされている状態。従来の Linux では MTA に sendmail が採用されているのですが、せっかく入っているので使えるようにしてみました。以下検証手順です。 従来の sendmail を中心としたメール・サーバ管理は linux アカウントを常に意識する必要がありました。メールしか使わないユーザが居ても、useradd コマンドで linux 用のアカウントを発行する必要があったのです(qmail+vpopmail の場合は別ですが……)。
Cyrus-imap を使えばメールのみ単体のアカウントとして扱う事が出来、実際に useradd でユーザを追加する必要がありません。そのため、セキュリティ的にも不用意にアカウントを作る必要が無く、望ましい状態といえるでしょう。また、標準で POP3, POP3S のメール受信暗号化, IMAP, APOP など各種対応しているほか、Postfix との組み合わせで SMTP AUTH(SASL) や SMTPS による送信暗号化(STARTTLS)も実現できます。 とりあえず、Fedora Core 3 にて Cyrus-imap + Postfix メールサーバ構築した手順を整理しておきます。 Cyrus-imapd + saslauthd 編Cyrus-imapd を起動するだけで、POP3, POP3S, IMAP サーバをサポートします。また、認証には通常のパスワード認証の他、SASL を使う事で APOP による暗号化されたパスワード認証も可能となります。まず、2つのデーモンを起動するような設定が必要です。 起動は以下の通りです。
ところで saslauthd が起動していないのと認証できなくなるので要注意です。
このようなエラーが出たら saslauthd が起動しているかどうか確認してみましょう。自分はここでハマッてしまいました。サーバ起動時も saslauthd が起動するようにコマンドを実行しておきます。
同様に cyrus-imapd もサーバブート時に自動起動出来るようにしておきます。
メールアカウント(メールボックス)の作成メールボックスの作成のためには cyrus ユーザ権限で操作を行います(/etc/imapd.conf で “admins: cyrus” の記述があるため。もちろん、他のユーザに割り当ててもいいとおもいます)。初期状態で cyrus にはパスワードが与えられていないので【 passwd 】コマンドで適当なパスワードを設定しておきます。そのあと、メールボックスの作成コマンドを実行します。実行しないと次のようなメールボックスが見つからないよ〜というエラーが出てしまいます。
さて、cyrus パスワードは適当に決めます。
次に cyrus-imapd の管理コマンド cyradm を使いメールボックスを作成します。
”sion” と出ているのは自分のホスト名です。各々のサーバで異なると思います。ホスト名> と入力する所(プロンプト)が出たら【 cm user.ユーザ名 】の書式でメールボックスを作成します。たとえば info というアカウントが欲しい場合は【 cm user.info 】です。 この段階でメーラーでテストすると、通常のパスワード認証で POP3, POP3S, IMAP が利用出来るようになります。
なお、メールボックスの場所は /var/spool/mail 配下や /home/アカウント名 配下ではなく【 /var/spool/imap/z/user/アカウント名 】となります(/etc/imapd.confの調整で他の場所にすることもできるようです。 Postfix 側で Cyrus-imap 向けの配送設定をする/var/spool/mail/ 配下のスプールされているメールは読むことが出来ません。Postfix は /var/spool/mail を水に /var/spool/imap (/etc/imapd.conf で定義された場所)を見るためです。また、Postfix も標準のままだと /var/spool/imap にメールを送ってくれません。 そのため、postfix の設定ファイル【 /etc/postfix/master.cf】の書き換えをまず行います。120 行目を赤字部分に書き換えます。
それから 【 /etc/postfix/main.cf 】では次の2行を追加します。
その他 inet_interfaces=all を追加したり mynetworks_style=subnet や mynetworks = 192.168.11.0/24 等といった基本的な postfix の設定は当然必要ですが、割愛させて頂きます……。
あとは設定を反映させるために postfix の再起動です。
これでメール配送の準備は終わりました。APOP 用のパスワードを設定するには
saslpasswd2 コマンドを実行することで /etc/sasldb2 ファイルが作成されます。Cyrus-imapd や postfix の SASL 認証時には、このファイルを見に来ます。コマンド実行直後では、saslauthd から /etc/sasldb2 ファイルを読むことが出来ませんでした。/var/log/messages を見ると【 Permission denied 】(権限無し)の文字が。
よく見ると、ファイルのパーミッションや所有者情報が原因でした。
ls で見てみると、所有者が root でパーミッションが 640(rw-r——-)。このままでは root しか読み込めません。これはグループを mail に変える事が適切です(当初は chmod o+r /etc/sasldb2 などと実行してましたが、一般ユーザからもパスワード情報が見えてしまうおそれ=コマンド strings /etc/sasldb2 でパスワード情報が推測されてしまうのでボツでした。)imap サーバは UID 76 の cyrus というユーザ権限で実行します。所属グループは GID 12 の mail。ここには初期状態から postfix も含まれています。
なので、/etc/sasldb2 のグループは mail が適切です。
メール送信(SMTP AUTH)についてmaster.cf の中で以下の記述を追加します。
「ドメイン名」には自分のドメイン名を指定します。設定が終わったら postfix 再起動で設定が有効になります。
あとは、これまでの手順で SASL の設定が終わっていたら、SMTP AUTH 認証もそのまま使えます。 ところで、パスワードが適切に設定してあるはずなの認証が出来ない「no secret in databases」と出る場合があります。これは saslpasswd2 で -u ドメイン名(master.cf でsmtpd_sasl_local_domain で指定したドメイン名)の引数をつけてパスワードを設定しなおすと使えるようになりました。
Postfix 自動起動設定-sendmail と入れ替え初期状態では Sendmail が起動しています。Postfix へ入れ替える手順は以下の通りになります。
……のように、初期状態では無視されてますので、
このようにして自動起動、sendmail 停止・差し替えを行います。
SMTPS(STARTTSL)による送信STARTTSL をポート 465 番経由で Becky! から送信できる事を確認しています。/etc/postfix/master.cf の smtpd のコメントを外します。
/etc/postfix/main.cf には認証用の設定を追記します(Cyrus-imap 用のファイルを流用します)
この3行を追加して postfix 再起動で有効になります。Becky 側では【 ツール 】→【 メールボックスの設定 】→【 基本設定 】で SMTPS にチェックを入れます。『ポート番号をSSL標準の 465 に変更しますか?』と尋ねますので、ここでは【 はい 】を選びます。 次に【 詳細 】の見出しを選び、画面真ん中左の【 SSL/TLS 関連 】の『 層屎尿(T) 』の部分を【 STARTTLS 】にし、【 証明書を検証しない 】にチェックを入れます。
以上のような手順を踏むことで、一応メールサーバとして使えると思います。 ……結構面倒なので、実際の運用には qmail+qmailadmin や、/var/spool/mail を参照する qpopper + dracd + sendmail による POP Before SMTP のほうがお手軽かもしれません……。 参考URL一覧
[分類 /linux/FedoraCore3 ] 固定リンク |