Ubuntu のメール環境
Ubuntu 14.04 LTS の標準インストールでは、メールサーバの機能は利用できません。そこで、メール関係のソフトウェアをインストールして、Ubuntu 内でのメールのやりとりや、プロバイダのメールサーバ経由で外部へメールを送信できるようにします。
メールユーティリティのインストール
キーボードで、"Ctrl" + "Alt" + T キーを同時に押して、端末を起動します。
apt-get コマンドにより、メールユーティリティをインストールします。
$ sudo apt-get install mailutils
インストールを実行すると設定情報の入力を要求されるので、以下のように設定します。
- メール設定の一般形式 : スマートホスト付きインターネット
- システムメール名 : ローカルなホスト名
- SMTPリレーホスト : プロバイダのメールサーバ
メールを受け取るユーザ用のスプールファイルにアクセスできるようにします。
$ sudo touch /var/mail/ユーザ名
$ sudo chown ユーザ名:グループ名 /var/mail/ユーザ名
root宛のメールは、rootにならなければ見れず不便なので、管理ユーザに転送します。
$ sudo vi /etc/aliases
root: ユーザ名
$ sudo newaliases
OP25Bへの対応
ここまでの設定で、Ubuntu 単体でのメール送受信はできるようになりましたが、インターネット上にあるユーザにメールを送信することはできません。
しかも、多くのプロバイダのメールサーバでは、OP25B (Outbound Port 25 Blocking)という標準的にメールが利用する25番ポートが利用できないようになっています。
そこで、プロバイダのメールサーバを利用するにあたり、25番ポートにかわり、587番ポートを利用するように設定変更します。
具体的には、以下のようにpostfixの設定ファイルを編集します。
$ sudo vi /etc/postfix/main.cf
relayhost = [プロバイダのSMTPサーバ名]:587
SMTP-AUTHへの対応
SMTP-AUTHに対応するため、以下のようにpostfixの設定ファイルに追加します。
$ sudo vi /etc/postfix/main.cf
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/authinfo
smtp_sasl_security_options = noanonymous
sender_canonical_maps = hash:/etc/postfix/sender_canonical
SMTP-AUTH対応のSMTP認証情報設定ファイルに、プロバイダのサーバ毎に、プロバイダのメールIDとそのパスワードを以下のように作成します。
$ sudo vi /etc/postfix/authinfo
[プロバイダのSMTPサーバ名]:587 プロバイダのメールID:メールパスワード
$ sudo chmod 604 /etc/postfix/authinfo
設定ファイルを作成したら、postmap コマンドでファイルを変換します。
$ sudo postmap /etc/postfix/authinfo
メール From 属性変更への対応
ここまでの設定でメールを送信するとメールの From 属性が Ubuntu 上の"ユーザ名@ホスト名"になってしまいます。
プロバイダによっては、From 属性を"プロバイダのメールID@プロバイダのホスト名"にする必要があります。
そこで、送信元ドメイン確認対応のため、送信元メールアドレスの書き換えを設定します。
$ sudo vi /etc/postfix/sender_canonical
ユーザ名@ホスト名 プロバイダのメールID@プロバイダのホスト名
www-data@ホスト名 プロバイダのメールID@プロバイダのホスト名
上記で、"www-data@ホスト名"を加えたのは、Apache の PHP 等からメールを送信する場合にはユーザ名が www-data になるからです。利用しない場合には、削除してください。
設定ファイルを作成したら、postmap コマンドで変換します。
$ sudo postmap /etc/postfix/sender_canonical
postfix を再起動して設定を反映させます。
$ sudo /etc/init.d/postfix restart
メールログの参照
うまく動作しない場合は、以下のログを参照してください。
$ cat /var/log/mail.log
$ cat /var/log/mail.err
メールの動作テスト
mail コマンドで Ubuntu 内のユーザにテストメールを送信します。
$ mail ユーザ名
Cc:
Subject: test
aaa
^D ← "Ctrl"+D でメール本文の終了
送信したテストメールを mail コマンドで見ます。
$ mail
"/var/mail/ユーザ名": 1 message 1 new
>N 1 ユーザ名 test
? ← "Enter"
Return-Path: <プロバイダのメールID@プロバイダのホスト名>
To: <ユーザ名@ホスト名>
Subject: test
From: プロバイダのメールID@プロバイダのホスト名
aaa
? d ← d+"Enter" で受信したメールの削除
? ←"Enter"
No applicable message
? q ← q+"Enter" でmailコマンドの終了
Held 0 messages in /var/mail/ユーザ名
インターネット上のメールユーザにメールを送信してみる。
$ mail インターネット上のメールアドレス
Cc:
Subject: テスト
テストメール
^D ← "Ctrl"+D でメール本文の終了
日本語メールの漢字コードについて
日本語でメールを送信すると件名(Subject)等が UTF-8 の漢字コードになっています。
これを、ISO-2022-JP 形式に変換するには、以下のスクリプトを参考にしてください。
nkf をインストールして、漢字コード変換の準備をします。
$ sudo apt-get install nkf
タイトルが日本語のメールをISO-2022形式で送信スクリプト例です。
$ vi mailtestscript
#!/bin/bash
sub="Subject: =?ISO-2022-JP?B?"`echo "日本語タイトル" | iconv -t ISO2022JP | base64`"?="
echo "Content-type: text/plain; charset=ISO-2022-JP"
echo Content-transfer-encoding: 7bit
echo $sub
echo
echo 日本語本文 | nkf -j
echo .
スクリプトができたら、以下のように実行します。
$ bash mailtestscript | sendmail メールアドレス