[ローカル用 Postfix のインストール]
ところで ubuntu を含む linux 系の OS で動くアプリケーション (特にサーバー系アプリケーション) では、アプリケーションの状態を syslog やメールで通知するのが一般的だ。
ubuntu の場合、syslog (正確には rsyslog) は最初からインストールされている。
ところが、以前は最初からインストールされていたメールサーバーが、10.04 では別途インストールするようになっている。
この変更がいつのバージョンからなのか、残念ながら記憶にない。
もっとも最近は、使うアプリケーションによっては必ずしもメールサーバーが同じ PC にインストールされている必要は無くなっているので、メールサーバーも必要になったときにインストールすればいいようだ。
今回インストールした ubuntu は、インストールのときに「セキュリティアップグレードを自動的にインストールする」を選んだが、言葉通り「自動的にインストール」されている気配はない。
Server Edition ではセキュリティアップグレードが自動的にインストールされないのが正しい動きなのかもしれないが、サーバー運用を予定しているのに、毎回ログインして手作業でアップグレードを行うのも煩わしい。
幸いなことに ubuntu には定期的なアップグレードを手軽に行ってくれるパッケージがあるので、これをインストールして使うことにする。
なお、(サーバーで自動アップグレードは危険だという指摘もあるが、そこまでクリティカルな運用をする積もりはないので、あえて気にしないことにする。
ただし、アップグレードの結果をメールで通知するようはしておきたい。
そのためには、同じマシンにメールサーバーも必要だ。
そこで定期的にアップグレードを行うパッケージのインストールに先立って、まずはメールサーバーをインストールしておく。
使用するメールサーバーは Postfix だ。
なおここでインストールするメールサーバーは、自分自身から送信されるメールのみを受け取り、受け取ったメールは全て別のメールサーバーに転送するようにする。
転送先のメールサーバーも自分で管理しているので、POP before SMTP や SMTP 認証などを考慮しなくてもよい。
また、OP25B (Outbound Port 25 Blocking) についても考慮の必要がないようになっている。
それでは Postfix をインストールするために以下のコマンドを実行する。
ubuntu (debian 系 linux ディストリビューション) ではパッケージのインストール、アンインストールを行うコマンドが複数あるが、インストールされたパッケージが明示的に指定されたのか、依存関係によって非明示的にインストールされたのかを管理する方法が別であるため、これらを混在させて使用しない方が望ましい。
~$ sudo aptitude update; sudo aptitude install postfix
パスワードを訊いてきたらログインしたときのパスワードを入力する (直前の sudo コマンドの使用から時間が空いていなければパスワードは訊かれない。)
postfix と ssl-cert の二つのパッケージをインストールして良いか確認してくるので ‘y’ を入力してEnter を押す (すでに ssl-cert パッケージがインストールされているなら、ssl-cert は表示されない。)
パッケージのダウンロードと展開が順次行われ、Postfix を設定するダイアログが表示される。
最初のダイアログでは、設定形式の名称とその意味についての説明が表示されている。
Tab キーを押し、カーソルを [了解] に配して Enter を押す。
すると最初のダイアログで示された設定形式を選ぶダイアログになる。
今回は受け取ったメールは全て別のメールサーバーに転送するようにしたいので、ここでは [サテライトシステム] を選ぶ。
続いてシステムメール名の入力ダイアログが表示される。
ここにはこのシステムの FQDN (ホスト名を含むドメイン名) を入力するのが正しい。
ここでは、ubuntu をインストールしたときに入力したホスト名に、DHCP サーバーで配布しているドメイン名を追加したものになる (別の言い方をすると SSH で接続する際に入力したホスト名だ。)
システムメール名を入力すると、次にリレーホストを入力するダイアログが表示される。
ここにはメールの転送先になる既設のメールサーバーの名前を入力する。
繰り返しになるが、転送先のメールサーバーも自分で管理しているので、POP before SMTP や SMTP 認証、更には OP25B についても考慮は不要だ。
リレーホストの入力で Postfix の設定ダイアログが閉じ、コマンドプロンプトに戻る。
ここで設定した内容は /etc/postfix/main.cf ファイルに反映されている。
ただしここで作成された /etc/postfix/main.cf ファイルには、一部微妙な記述が含まれるのでそこだけを修正しておく。
修正箇所は mydestination エントリだ。
以下のコマンドで vi エディタを起動して、mydestination エントリの行を編集する。
~$ sudo vi /etc/postfix/main.cf
元の mydestination エントリを削除して、代わりに以下の様に書き換えてしまう。
mydestination = $myhostname localhost.$mydomain localhost
これで、インストールした Postfix が、自分自身から送信されるメールのみを受け取り、受け取ったメールは全て別のメールサーバーに転送するようにするように設定できた。
ただし、ドメイン部のないアドレスおよび mydestination エントリに羅列されたドメイン宛てのメールは転送されないので、適宜 /etc/aliases ファイルを編集して適切な宛先に転送するようにしておく。
更に念のために、/etc/aliases ファイルに書かれていないアドレス宛のメールがエラーになるように、/etc/postfix/main.cf ファイルに以下の一行を書き加える。
local_recipient_maps = $alias_maps
/etc/postfix/main.cf ファイルを編集したら、以下のコマンドを実行して Postfix にこれを再読込させるのを忘れないようにしよう。
~$ sudo service postfix reload
また、/etc/aliaes ファイルを編集した後は、以下のコマンドの実行して変更内容を反映しておく。
~$ sudo newaliases
以上の 2 箇所を変更した /etc/postfix/main.cf の内容は以下の通りだ。
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
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 parameters
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
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = ******.example.jp
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname localhost.$mydomain localhost
relayhost = smtp.example.jp
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
local_recipient_maps = $alias_maps
メールサーバーのインストールができたところで、定期的なアップグレードを行うパッケージをインストールするとしよう。


[...] ubuntu のインストール直後の調整 (その 3) [...]