最近、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で、GMAIL経由でメールを送る(OP25B対策)
- » Postfix から Gmail 経由でメールを送る linux.matchy.net: 〜Linuxで遊ぼう!〜
- ubuntuでコマンドラインよりメール送信希望。 sendmail, postfix, mailxはインストール済。 コマンドラインより mail test@test.co.jp のように 送ったところ、エラーメッ.. – 人力検索はてな
- [Gmail][Postfix] GmailのSMTPサーバの認証局証明書の警告 – matzmura blog
- [SOLVED] I need help configuring postfix to send mail to gmail smtp – Ubuntu Forums