Ubuntu16.04上でPostfixを用いたローカル専用メールサーバを構築する
- はじめに
- Postfixのインストール
- mailxのインストール
- POP3サーバ(dovecot)のインストールと設定
- Thunderbirdの設定
- Postfixにて非ユーザー宛のメールを受信して任意のプログラムに渡す
- 戻る
はじめに_
メールをやりとりするシステムを開発するために、ローカル上で動くメールサーバをPostfixを用いて作成する。
Postfixのインストール_
ホスト名を確認する。
% more /etc/hosts 127.0.0.1 localhost 127.0.1.1 gotoh-virtual-machine # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Postfixのインストール時に「ローカル専用」を設定する。FQDNについてはデフォルトで良い。今回は「gotoh-virtual-machine」とした。
% sudo aptitude install postfix
mailxのインストール_
MTAであるmailxコマンドをインストールする。
% sudo aptitude install mailutils % which mail /usr/bin/mail
Ubuntu16.04上にいるユーザにメールを送ってみる。今回はユーザgotohがいるのでgotohにメールを送ってみる。
% mail gotoh@gotoh-virtual-machine Cc: [Enterキー] Subject: Test Hello, this is test. from Yuichi Goto [Ctrl-D]
メールは Postfix経由で /var/mail/gotoh に保存される。
% tail /var/mail/gotoh
POP3サーバ(dovecot)のインストールと設定_
% sudo aptitude install dovecot-core dovecot-pop3d % cd /etc/dovecot % sudo vi dovecot.conf
localhost(127.0.0.1)からのみアクセスできるように変更する。
listen = 127.0.0.1
dovecotを再起動する。
sudo systemctl restart dovecot
Thunderbirdの設定_
メーラーのThunderbirdでメールを送ったり、メールを受信したりできるようにする。Thunderbirdはデフォルトでインストールされている。Thunderbirdを起動する。
Thunderbirdでメールアカウントの設定を行う。
- 最初のウィンドウで「メールアドレス」を「gotoh@gotoh-virtual-machine」(自分の環境に合わせること)、「パスワード」をログインパスワードに設定する。その後「続ける」をクリックする。
- 「受信サーバ」を「POP3」、「サーバのホスト名」を受信サーバおよび送信サーバともに「localhost」とする。また、「SSL」を「接続の保護なし」とする。その後「再テスト」をクリックする。
- 「完了」をクリックする。
- 警告のウィンドウがでるが「接続する上での危険性を理解しました」をチェックし、「完了」をクリックする。
- 「受信」をクリックし、さきほどのmailコマンドで送信したメールを受信する
- 同様にメールを「gotoh@gotoh-virtual-machine」(自分の環境に合わせること)に送り、届くことを確認する
Postfixにて非ユーザー宛のメールを受信して任意のプログラムに渡す_
現時点での設定を確認する。
% postconf -d | grep ^local_recipient_maps local_recipient_maps = proxy:unix:passwd.byname $alias_maps % postconf -d | grep ^alias_maps alias_maps = hash:/etc/aliases, nis:mail.aliases % postconf -d | grep ^default_privs default_privs = nobody
上述の3つのパラメータを変更する。
% cd /etc/postfix % sudo cp -p main.cf main.cf.org % vi main.cf
alias_maps と default_privsを以下のように変更する。
# 既存の記述に追加 alias_maps = hash:/etc/aliases, regexp:/etc/postfix/application.regexp # 行ごと追記 default_privs = gotoh
変更したら、正規表現を書くファイルを用意する。
% sudo touch application.regexp
Postfixを再起動し、設定が変更されていることを確認する。
% sudo postfix reload % postconf | grep ^alias_maps alias_maps = hash:/etc/aliases, regexp:/etc/postfix/application.regexp % postconf | grep ^default_privs default_privs = gotoh
メール振り分けの例_
/etc/postfix/application.regexp を編集する。たとえば、「数字4桁」-「英数字3文字」-d@foo.bar.jpというメールアドレスを受けとり、/tmp/mail-spool.txtというファイルに保存したければ以下のように記述する。ポイントは@の後ろが省略されることがあるので、「(@.*)?$」を記述すること。
以下の1行目が上述の処理、2行目は正規表現にひっかからないとき無視するように設定している。
/^[0-9]{4}-[0-9a-zA-Z]{3}-d(@.*)?$/ "| /bin/cat >> /tmp/mail-spool.txt" /^.*(@.*)?$/ /dev/null
Thunderbirdで1234-abc-d@gotoh-virtual-machine(@の後ろは各自の環境に応じて変えること)にメールを送ってみる。
メールログで確認する。
% tail /var/log/mail.log 〜省略〜 Dec 25 10:07:46 gotoh-virtual-machine postfix/local[9570]: 70682B1C11: to=<1234-abc-d@gotoh-virtual-machine>, relay=local, delay=0.07, delays=0.06/0.01/0/0, dsn=2.0.0, status=sent (delivered to command: /bin/cat >> /tmp/mail-spool.txt) 〜省略〜
当該ファイルを確認する。
% ls /tmp/mail-spool.txt /tmp/mail-spool.txt % more /tmp/mail-spool.txt From owner-1234-abc-d@gotoh-virtual-machine.localdomain Sun Dec 25 10:07:46 201 6 Return-Path: <owner-1234-abc-d@gotoh-virtual-machine.localdomain> Delivered-To: 1234-abc-d@gotoh-virtual-machine Received: from [127.0.0.1] (localhost [127.0.0.1]) by gotoh-virtual-machine.localdomain (Postfix) with ESMTPS id 70682B1C11 for <1234-abc-d@gotoh-virtual-machine>; Sun, 25 Dec 2016 10:07:46 +0900 (JST) To: 1234-abc-d@gotoh-virtual-machine From: Yuichi Goto <gotoh@gotoh-virtual-machine> Subject: =?UTF-8?B?44OG44K544OI?= Message-ID: <77334061-9260-aaf2-b5a5-881335b27533@gotoh-virtual-machine> Date: Sun, 25 Dec 2016 10:07:46 +0900 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-2022-jp; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit $B%F%9%H%a!<%k
メールがまるごと保存されているのがわかる。