EQQ.jp

Index


Ubuntu のメール環境

Ubuntu 14.04 LTS の標準インストールでは、メールサーバの機能は利用できません。そこで、メール関係のソフトウェアをインストールして、Ubuntu 内でのメールのやりとりや、プロバイダのメールサーバ経由で外部へメールを送信できるようにします。

 

メールユーティリティのインストール

キーボードで、"Ctrl" + "Alt" + T キーを同時に押して、端末を起動します。
apt-get コマンドにより、メールユーティリティをインストールします。

$ sudo apt-get install mailutils

インストールを実行すると設定情報の入力を要求されるので、以下のように設定します。

メールを受け取るユーザ用のスプールファイルにアクセスできるようにします。

$ 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 メールアドレス