Ubuntu Server でメールサーバを構築するページです。

Postfix

Postfixは複雑になりすぎたSendmailのかわりによく使われるSMTPサーバ用のソフトである。インストールは apt一発でOKだが、メールサーバの設定形式が聞かれるので、自分の条件に合わせる必要がある。(もちろん、後から設定ファイルを修正すれば問題ない。)

今回はメール中継用のサーバを利用するので、「サテライトシステム」を選択した。

postfix-install01.png
postfix-install02.png
postfix-install03.png
postfix-install04.png

設定

設定は基本的に main.cf を変更すればよい。

postfixを「サテライトシステム」を選択してインストールした直後の main.cf: filemain.cf.orig

設定例

pre>

# ホスト名 myhostname = mail.example.com

# aliasの設定 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases

# メール送信の設定 myorigin = /etc/mailname

# メールの最終目的地とみなす範囲の指定 mydestination = mail.example.com, localhost.example.com, localhost

# ローカルメール以外は mailgw に送る relayhost = relay.example.com

# 信頼できるクライアントのネットワークを指定 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

# メールボックスの容量制限なし mailbox_size_limit = 0

# メールのサイズ容量制限(20MB) message_size_limit = 20971520 recipient_delimiter = +

# 全てのアクティブなインターフェースで待ち受ける inet_interfaces = all

# メールの格納方式を Maildir方式にする home_mailbox = Maildir/

# ヘッダをチェックするファイルの場所を指定 header_checks = regexp:/etc/postfix/header_checks

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) 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 の設定 smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.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

# 不明なユーザ宛のメールやホストネーム宛のメールが届いた際に

# エラーコードを 450 ではなく 550 を返すようにする unknown_local_recipient_reject_code = 550 unknown_address_reject_code = 550 unknown_client_reject_code = 550 unknown_hostname_reject_code = 550

/pre> /etc/postfix/header_checksに以下の記述をすることで、ローカルクライアントのIPアドレスなどを送信しないようにできる。(参照:Postfix (SMTPサーバー)/Ubuntu 8.04

pre> /^Received:.*192\.168\..*/ IGNORE /^Received:.*127\.0\.0\.1.*/ IGNORE

/pre> main.cfの内容を変更したら、postfixに設定ファイルを強制的に読み込ませる。(ただし、inet_interfacesを変更した場合にはpostfixを再起動する必要あり。参照:Postfixの基本設定 (ほげおメモ)

  • 通常のパラメータ変更

    pre> $ sudo /etc/init.d/postfix reload

    /pre>

    • inet_interfacesの内容を変更した場合

      pre> $ sudo /etc/init.d/postfix restart

      /pre>

Maildir形式に変更する

MailBox形式では受信したメールがメールスプールに1つのファイルとして保存されるので、もしもメールスプールが壊れてしまうと、メール全体が読めなくなってしまう。その点、Maildir形式ならばメールは ~/Maildir 以下に1通ごと別のファイルとして保存されるので安心である。また、Quotaを使ってメール容量に制約もかけやすい。(参照:メールサーバー構築(Postfix+Dovecot) - Fedoraで自宅サーバー構築

pre> $ mkdir -p ~/Maildir/{new, cur, tmp} $ chown -R 700 ~/Maildir

/pre> 新規ユーザを追加した際に自動的に Maildir が作成されるように /etc/skel にテンプレートを作っておくと便利。

pre> $ sudo mkdir -p /etc/skel/Maildir/{new,cur,tmp} $ sudo chmod -R 700 /etc/skel/Maildir

/pre>

トラブル対応

File too large

/var/log/maillog に以下のようなメッセージが表示されて、メールが受信できなくなる。(情報:かっぱの金町Blog: postfixのmailboxの容量制限

pre> cannot access mailbox /var/mail/hoge for user hoge error writing message: File too large

/pre> これは、postfixで設定したメールボックスの最大容量を越えてしまったのが原因である。一時的に最大値を大きく設定して、該当ユーザに不要なメールをメールボックスから削除してもらい、また元の最大値に戻せばよい。

  • /etc/postfix/main.cf

    pre> mailbox_size_limit = 512000000     ↓ mailbox_size_limit = 1024000000

    /pre>

SASL

SASLを用いてSMTP-AUTH対応にする。ここが一番ハマった。ubuntuでは postfix が chroot しているので、saslauthd が postfix から見えるようにしなくてはいけない。本来ならば、セキュリティレベルを上げるためにLDAPやSASLパスワードを利用したいが、それは今後の課題ということで...

postfixのchroot対策をしても、再起動すると /var/run が tmpfs に置かれるのでシンボリックリンクがクリアされてしまう。(Bug #138931 in cyrus-sasl2 (Ubuntu): “Can't use saslauthd to authenticate both postfix and cyrus due to /var/run/saslauthd being on tmpfs”

sasl2-binのインストール

pre> $ sudo apt-get install sasl2-bin

/pre>

インストールしただけでは saslauthd は自動起動しないので、/etc/default/saslauthd を以下のように変更する。

pre> START=no   ↓ START=yes

/pre> saslauthd を起動して、SMTP認証のテストを行う。

pre> $ sudo /etc/init.d/saslauthd start $ sudo testsaslauthd -s smtp -u ユーザ名 -p [ユーザの平文パスワード] 0: OK "Success." ←このように表示されたら大丈夫

/pre> 参照:Postfix (SMTPサーバー)/Ubuntu 8.04:SMTP認証の利用設定

postfix の chroot 対策

SASLの設定をしてメールソフトから送信しようとしたが、以下のエラーが発生して、メールを送れなかった。

pre> Dec 26 14:12:19 hogehoge postfix/smtpd[27318]: connect from kerokero[xx.xx.xx.xx] Dec 26 14:12:51 hogehoge postfix/smtpd[27318]: warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory Dec 26 14:12:51 hogehoge postfix/smtpd[27318]: warning: SASL authentication failure: Password verification failed Dec 26 14:12:51 hogehoge postfix/smtpd[27318]: warning: kerokero[xx.xx.xx.xx]: SASL PLAIN authentication failed: generic failure Dec 26 14:12:51 hogehoge postfix/smtpd[27318]: warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory Dec 26 14:12:51 hogehoge postfix/smtpd[27318]: warning: kerokero[xx.xx.xx.xx]: SASL LOGIN authentication failed: generic failure Dec 26 14:13:10 hogehoge postfix/smtpd[27318]: disconnect from kerokero[xx.xx.xx.xx]

/pre> かなり悩んだが、ここに解決法が記述されていた。

pre> $ sudo /etc/init.d/saslauthd stop $ sudo rm -r /var/run/saslauthd/ $ sudo mkdir -p /var/spool/postfix/var/run/saslauthd $ sudo ln -s /var/spool/postfix/var/run/saslauthd /var/run $ sudo chgrp sasl /var/spool/postfix/var/run/saslauthd $ sudo adduser postfix sasl $ sudo /etc/init.d/saslauthd start

/pre> これで解決と思ったが、サーバを再起動するとまた /var/run/saslauthd が作られてしまう。ということで、Dovecot SASL を使うよう方針を変えた。

Dovecot

IMAPやPOP3サーバ用ソフト。詳細は、Ubuntu/Server/Mail/Dovecotにて解説。

RoundCube WebMail

Ajaxを用いたWebMailソフト。(本家サイト) 2008年の年末に0.2-stable版が公開された。日本語対応も進んでいるらしい。2009-01-09現在、Ubuntuには古い0.1-rc2用のパッケージしかなかったので、手動でインストールしてみた。

必要なパッケージのインストール

メール本体を格納するデータベースとPHPが必要。今回はRDBMにMySQLを使ったので、以下のパッケージをインストールした。

pre> $ sudo apt-get install php5-mcrypt php-auth php-net-smtp php-net-socket \

   &color(blue){php-mail-mime ucf tinymce mysql-server mysql-client php5-mysql php-db};

/pre> MySQLをインストールする際に、rootのパスワードを作成するよう促されるので、パスワードを設定しておく。(もちろん、後で作成することも可能)

PHP Fileinfoのインストール

情報元:XooNIps - EthnaWiki しかし、php5-dev をインストールすると他の開発系のソフトも入ってしまうため、実際にインストールはしなかった。別マシンでビルドして、できたファイルだけ入れればよいのかもしれない。

fileinfo拡張のインストール手順

これもUbuntuの場合。

pre> $ sudo aptitude install php5-dev

/pre> してあればpeclコマンドが使えた気がするので、まずfileinfo拡張が要求するlibmagic-devをインストール

pre> $ sudo aptitude install libmagic-dev

/pre> そして次にpeclコマンド

pre> $ sudo pecl install fileinfo WARNING: "pear/Fileinfo" is deprecated in favor of \ "channel://php-src/ext/fileinfo/in php sources" downloading Fileinfo-1.0.4.tgz ... Starting to download Fileinfo-1.0.4.tgz (5,835 bytes) .....done: 5,835 bytes 3 source files, building running: phpize Configuring for: PHP Api Version: 20041225 Zend Module Api No: 20060613 Zend Extension Api No: 220060519 building in /var/tmp/pear-build-root/Fileinfo-1.0.4 running: /tmp/pear/cache/Fileinfo-1.0.4/configure

Build process completed successfully Installing '/usr/lib/php5/20060613+lfs/fileinfo.so' install ok: channel://pear.php.net/Fileinfo-1.0.4

/pre> これでインストールされるので、最後に表示されるfileinfo.soのインストール先ディレクトリを覚えておいて、これを転送先サーバの同じディレクトリにコピーする。

pre> $ scp /usr/lib/php5/20060613+lfs/fileinfo.so user@server:/usr/lib/php5/20060613+lfs/

/pre> /etc/php5/conf.d/fileinfo.iniを作成する。

pre> extension=fileinfo.so

/pre> その後でapacheを再起動する。

プログラムのダウンロードと展開

pre> $ cd workdir $ wget http://nchc.dl.sourceforge.net/sourceforge/roundcubemail/roundcubemail-0.2-stable.tar.gz $ tar zxvf wget roundcubemail-0.2-stable.tar.gz $ sudo mv roundcubemail-0.2-stable /var/www $ cd /var/www $ sudo ln -s roundcubemail-0.2-stable webmail $ sudo chown -R www-data:www-data roundcubemail-0.2-stable

/pre>

データベースの設定(MySQLの場合)

RoundCube WebMailで使用する空のデータベースを作成し、テーブルレイアウトと roundcube user のアクセス権を設定する。その際、roundcube user のパスワードも設定しておくとよい。なお、この時設定したパスワードは 'config/db.inc.php' に記述しなければいけない。さらに、MySQL Ver.4.1 以降では、データベースの文字コードを UTF-8 に設定する。

データベースの作成

pre> $ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.0.51a-3ubuntu5.4 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> CREATE DATABASE roundcube DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON roundcube.* TO roundcube@localhost \

&color(blue){IDENTIFIED BY 'ユーザroundcubeのパスワード';};

Query OK, 0 rows affected (0.00 sec)

mysql> quit Bye

/pre>

作成したデータベースにテーブルを作成

pre> $ mysql -u roundcube -p roundcube < ./SQL/mysql.initial.sql

/pre>

ブラウザを用いた各種設定

0.2-stableでは直接設定ファイルを書き換えるだけでなく、ブラウザ上で各種設定が行えるようになった。

roundcubewebmail01.png

START INSTALLATIONをクリックすると、サーバにインストールされているソフトウェアのチェックをしてくれる。

roundcubewebmail02.png

なんとMySQLをインストールしたはずなのに、認識されていない。これは、php5-mysql をインストールした後に Apache2 を再起動しなかったため。ついでに php5-gd もインストールした後に Apache2 を再起動すると、以下の画面のように無事 MySQL が認識された。

roundcubewebmail03.png
roundcubewebmail04.png
roundcubewebmail05.png
roundcubewebmail06.png
roundcubewebmail07.png
roundcubewebmail08.png
roundcubewebmail09.png
roundcubewebmail10.png
roundcubewebmail11.png
roundcubewebmail12.png
roundcubewebmail13.png
roundcubewebmail14.png
roundcubewebmail15.png

#ref(): File not found: "roundcubewebmail16.png" at page "Ubuntu/Server/Mail"

IMAP

IMAPの仕組みをよく理解していないので、Dovecotと RoundCube WebMail の連携がうまくいかない。勉強の参考になりそうなサイトをリストアップしておく。

http → https へリダイレクトする

WebMailのログイン画面が http を使っていると、ユーザ名とパスワードが平文で流れてしまうので、セキュリティ上問題がある。間違えて http:// 経由でアクセスした場合でも強制的に https:// にリダイレクトするようにしておけば安心である。Apache の場合、mod_write を使うと簡単に実現可能である。

Apache2でSSLを動かすには、Ubuntu/Server/Web/Apache2/SSLを有効にするを参照のこと。

リンク

Squirrelmail

少し前までフリーのWebmailソフトの定番だった。ただ、多言語対応が遅れていたため、最近のUTF-8が標準のロケールになっているLinuxディストリビューションではあまり使われなくなってきた?

Mailmanによるメーリングリスト管理

ブラウザ上でメーリングリストの管理ができるようになるツール。設定等は、Ubuntu/Server/Mail/Mailmanを参照のこと。

リンク


添付ファイル: filemailman-install03.jpg 636件 [詳細] filemailman-install02.jpg 631件 [詳細] filemailman-install01.jpg 662件 [詳細] fileroundcubewebmail15.png 747件 [詳細] fileroundcubewebmail14.png 769件 [詳細] fileroundcubewebmail13.png 773件 [詳細] fileroundcubewebmail12.png 756件 [詳細] fileroundcubewebmail11.png 769件 [詳細] fileroundcubewebmail06.png 804件 [詳細] fileroundcubewebmail04.png 792件 [詳細] fileroundcubewebmail10.png 490件 [詳細] fileroundcubewebmail09.png 765件 [詳細] fileroundcubewebmail08.png 768件 [詳細] fileroundcubewebmail07.png 788件 [詳細] fileroundcubewebmail05.png 498件 [詳細] fileroundcubewebmail03.png 391件 [詳細] fileroundcubewebmail02.png 379件 [詳細] fileroundcubewebmail01.png 832件 [詳細] filemain.cf.orig 493件 [詳細] filepostfix-install04.png 912件 [詳細] filepostfix-install03.png 891件 [詳細] filepostfix-install02.png 901件 [詳細] filepostfix-install01.png 961件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-05-11 (金) 20:11:22 (2043d)