※弊社記事はたぶんにPRが含まれますので
話半分で受け取ってください。

Ubuntu 9.04 Server – Postfixの設定

 最近、Ubuntuのサーバー版をいじっているのですが、CentOSと微妙に違うところが多いので、メモ。
 Postfixのインストールから、Gmail経由でメールを送信できるようになるまで。

 Postfixの設定は、基本的にはCentOSと同じような設定ですが、ところどころ違うところがありました。

Postfixのインストール

 Ubuntuをインストールするときにmail serverにチェックを入れなかったため、自分でインストール。

sudo apt-get install postfix

 これでインストールを始めたら

General type of configuration?
- No configuration
+ Internet Site
- Internet with smarthost
- Satellite system
- Local only

とか言い出した!CentOSの時は(たしか)こんげなのなかったぞ。UbuntuはこういうGUIとCUIの狭間みたいなのが多い印象。上手く使うとすごく省力化出来る気がしますが、設定ファイル開いてゴリゴリ設定するのになれてしまっているので、なんか、ピンと来ません。。
 とりあえず「Internet Site」にしてみたのですが、結局後から/usr/share/postfix/main.cf.distをコピーして設定し直しました。。設定したのは以下の項目。まだddnsを設定していないので、ドメインは適当。

mail_owner = postfix
myhostname = mail.ubuntu
mydomain = ubuntu
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = 192.168.0.0/24, 127.0.0.0/8
home_mailbox = Maildir/
#sendmail_path =
#newaliases_path =
#mailq_path =
#setgid_group =
#html_directory =
#manpage_directory =
#sample_directory =
#readme_directory =

 sendmail_pathからreadme_directoryまでは、コピーしたままだとコメントアウトされていないので、コメントアウトしました。まあ、使うときになったら設定します。
 保存して閉じたら、Postfixを再起動。

sudo /etc/init.d/postfix restart

Gmail経由でメールを送信する設定

 VPSなんかで使う場合はそのまま使えると思いますが、自宅サーバなんかの場合だとそのままではOP25B(Outbound Port 25 Blocking)でメールの送信できなかったりします。そんなわけで、Gmail経由でメールを送信する設定にします。

 作業を始める前に、saslをインストールします。Ubuntuの場合は、sasl2-binというパッケージをインストールすれば良いみたいです。

sudo apt-get install sasl2-bin

 続いて、/etc/postfix/main.cfを設定。relayhostの項目に以下の内容を記述します。

relayhost = [smtp.gmail.com]:587

#sasl setting
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain

#tls setting
smtp_use_tls = yes

 次に/etc/postfix/sasl_passwdを作成して以下の内容を記述します。

[smtp.gmail.com]:587 demo@gmail.com:password

 「demo」の所は自分のGmailアカウントを、「password」の所にはGmailのパスワードを入力します。google appsの場合は「demo@gmail.com」の所に独自ドメインのメールアドレスを入力します。

 このファイルは平文でパスワードが記述されているので、chownでroot権限に、chmodで権限を600に変更します。

sudo chown root:root /etc/postfix/sasl_password
chmod 600 /etc/postfix/sasl_pasword

 変更したら、postmapを実行。

postmap /etc/postfix/sasl_passwd

 ここまで終了したら、Postfixを再起動します。

/etc/init.d/postfix restart

 これでGmail経由でメールの送信が出来るようになったハズ。

 From(送信元)のメールアドレスがGmailのメルアドになるのは仕様です。Fromのメルアドに任意のものを使いたい場合は、[設定] – [アカウント] – [メールアドレスの追加]という順に選択していって、送信元として表示したいメルアドを追加してあげればいいみたいです。
 とりあえずメールが送信できればいいので、そこまで設定していません。

root宛のメールを任意のメルアドに転送する

 サーバからしょっちゅうroot宛のメールが送信されてきますが、いちいちメールチェックするのはめんどくさいです。それよりは普段使っているメルアドに転送してくれた方が便利。

 と思う人はaliasesファイルを開いて最後の方に以下の内容を記述します。

root: demo@example.com

 編集が終わったら、newaliasesコマンドを実行して、aliases.dbファイルを更新します。

sudo newaliases

メールを送信してみる

 標準ではmailコマンドが使えないようなので、mailxをインストール。mailコマンドが使えるパッケージはmailutilsとmailxがあるようなのですが、今回はmailxにしました。

$ sudo apt-get install mailx

 あとは普通にmailコマンドでテストメールを送信してみます。

$ mail demo@example.com
Cc:
Subject:Test mail
this is test mail from Ubuntu Server.
.

 「これ長い」という場合は以下でもメールが送信できます。

$ echo test|mail demo@example.com

 この場合は、本文にtestとだけ書かれたメールが届きます。件名はありません。

たぶん認証関係のエラー

 とりあえずメールは送信できるようになったのですが、ログを見ると以下のようなエラー(?)が記録されています。

certificate verification failed for smtp.gmail.com[209.85.147.109]:587: untrusted issuer /C=US/O=Equifax/OU=Equifax Secure Certificate Authority

 調べたところ、どうもルート証明書に関係したもののようです。/etc/postfix/main.cfの中にあるTLSの所に以下の記述を追加します。さっき書いた「smtp_use_tls = yes」の下あたりが分かりやすくて良いと思います。

smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

 編集したら保存して閉じて、postfixを再起動します。

 ubuntuのCA(Certificate Authority;認証局)関係のファイルは、/etc/ssl/certs/の中に入っているようで、そのディレクトリの中にあるca-certificates.crtというファイルを参照しているようです。一体何が起きているのかはよく分かりません。でも、とりあえず、これで上記のエラーは出なくなりました。

参考

Postfix実用ガイド

  • メーカー:オライリージャパン
  • カテゴリ:大型本

関連する記事