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

設定例

# ホスト名
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

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

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

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

  • 通常のパラメータ変更
    $ sudo /etc/init.d/postfix reload
  • inet_interfacesの内容を変更した場合
    $ sudo /etc/init.d/postfix restart

Maildir形式に変更する

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

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

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

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

トラブル対応

File too large

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

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

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

  • /etc/postfix/main.cf
    mailbox_size_limit = 512000000
        ↓
    mailbox_size_limit = 1024000000

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のインストール

$ sudo apt-get install sasl2-bin

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

START=no
  ↓
START=yes

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

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

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

postfix の chroot 対策

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

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]

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

$ 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

これで解決と思ったが、サーバを再起動するとまた /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を使ったので、以下のパッケージをインストールした。

$ sudo apt-get install php5-mcrypt php-auth php-net-smtp php-net-socket \ 
    php-mail-mime ucf tinymce mysql-server mysql-client php5-mysql php-db

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

PHP Fileinfoのインストール

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

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

これもUbuntuの場合。

$ sudo aptitude install php5-dev

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

$ sudo aptitude install libmagic-dev

そして次にpeclコマンド

$ 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

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

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

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

extension=fileinfo.so

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

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

$ 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

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

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

データベースの作成

$ 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 \
 IDENTIFIED BY 'ユーザroundcubeのパスワード';
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye

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

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

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

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を有効にするを参照のこと。

  • /etc/apach2/sites-availabe/defaultの編集
    シンボリックリンクであるhttp://servername/webmail/ と 実体のhttp://servername/roundcubemail-0.2-stable/ へのアクセスを https://servername/webmail/ にリダイレクトする。
    <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteCond %{SERVER_PORT} !^443$
            RewriteRule ^/webmail/(.*)$ https://%{HTTP_HOST}/webmail/$1 [R]
            RewriteRule ^/roundcubemail-0.2-stable/(.*)$ https://%{HTTP_HOST}/webmail/$1 [R,L]
    </IfModule>
    
    実際にhttp://servername/webmail/にアクセスするとhttps://servername/webmail/ にリダイレクトされることを確認する。

リンク

Squirrelmail

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

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

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

リンク


添付ファイル: filemailman-install03.jpg 600件 [詳細] filemailman-install02.jpg 590件 [詳細] filemailman-install01.jpg 618件 [詳細] fileroundcubewebmail15.png 665件 [詳細] fileroundcubewebmail14.png 684件 [詳細] fileroundcubewebmail13.png 702件 [詳細] fileroundcubewebmail12.png 686件 [詳細] fileroundcubewebmail11.png 692件 [詳細] fileroundcubewebmail06.png 734件 [詳細] fileroundcubewebmail04.png 713件 [詳細] fileroundcubewebmail10.png 403件 [詳細] fileroundcubewebmail09.png 691件 [詳細] fileroundcubewebmail08.png 684件 [詳細] fileroundcubewebmail07.png 709件 [詳細] fileroundcubewebmail05.png 414件 [詳細] fileroundcubewebmail03.png 313件 [詳細] fileroundcubewebmail02.png 298件 [詳細] fileroundcubewebmail01.png 745件 [詳細] filemain.cf.orig 403件 [詳細] filepostfix-install04.png 813件 [詳細] filepostfix-install03.png 805件 [詳細] filepostfix-install02.png 821件 [詳細] filepostfix-install01.png 874件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-05-11 (金) 20:11:22 (1604d)