DebianにおけるsSMTP導入方法とGmailを利用したメール送信方法のまとめ
sSMTPは、SMTPプロトコルのみに対応した、非常に軽量・シンプルなMTAである。
メール送信機能を利用したいが、Sendmail等の複雑なMTAは使用したくない時などに便利である。
この記事では、sSMTPの導入方法と、Gmailを利用したメールの送信方法を簡単にまとめる。
環境
- Debian Wheezy 7.7 (x86_64, kernel:2.6.32-042stab092.2)
- ssmtp (2.64-7)
- heirloom-mailx (12.5-2)
- Gmail (2014-12-15時点)
- exim4 (4.80-7+deb7u1)
設定手順
設定は、以下の手順でおこなう。
- 既存のMTAの削除
- sSMTPのインストール
- 設定ファイルの記述
- 設定ファイルのファイル属性の変更
- ログインユーザのmailグループへの追加
既存のMTAの削除
(MTAがインストールされていない場合は、このセクションは実行しなくても良い。)
sSMTPは、他のMTAと同時に使用すると、競合することがある。そのため、既存のMTAがインストールされている場合は、該当するプログラムをsSMTP導入前に削除しておく。
今回使用した環境ではexim4がインストールされていたため、あらかじめ削除する。
具体的には、端末上で以下のコマンドを入力して、サービスの停止・exim4関連のパッケージの削除をおこなえば良い。
# service exim4 stop
# aptitude remove '~nexim4'
sSMTPのインストール
次に、sSMTPのインストールをおこなう。
Debian Wheezyでは、公式リポジトリにsSMTPのパッケージが用意されている。
ここでは導入を簡単にするため、このsSMTPパッケージを利用することにする。
端末上で以下のコマンドを入力し、sSMTPをインストールする。
上記のコマンドを実行後、"aptitude show ssmtp"や、"whereis ssmtp"等でsSMTPがインストールされていることを確認しておく。
# aptitude install ssmtp
設定ファイルの記述
sSMTPの設定ファイルは、/etc/ssmtp/ssmtp.confである。
このセクションでは、上記のファイルを編集・記述し、sSMTPが動作するように設定をおこなう。
sSMTPの動作に最低限必要な設定項目は、以下の6項目である。
上記6つの項目を、/etc/ssmtp/ssmtp.confに記述すれば良い。
Mailhub : "Mailhub=smtp.gmail.com:587"を指定
UseTLS : "UseTLS=Yes"を指定
UseSTARTTLS : "UseSTARTTLS=Yes"を指定
AuthUser : "AuthUser=hogehoge"、GmailのユーザIDを指定
AuthPass : "AuthPass=piyopiyo"、Gmailのパスワードを平文で指定
AuthMethod : "AuthMethod=LOGIN"を指定
----------※2015/03/16(Mon)追記分----------
MTAもしくはユーザ側でメールのヘッダFrom(注:エンベロープFromではない)を書換えたい場合は、
を/etc/ssmtp/ssmtp.confに記述する。
FromLineOverride=yes
----------以上2015/03/16(Mon)追記分----------
以下、設定後のssmtp.confと、標準で用意されているssmtp.confとの差分である。
# diff /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf.original 10c10 < mailhub=smtp.gmail.com:587 --- > mailhub=mail 22,28d21 < < UseTLS=Yes < UseSTARTTLS=Yes < < AuthUser=your_gmail_id < AuthPass=your_gmail_password < AuthMethod=LOGIN
以上で、設定ファイルの記述は完了である。
(より詳細な設定をおこないたい場合は、man ssmtp.confを参考にすると良い。)
設定ファイルのファイル属性の変更
次に、sSMTPが設定ファイルにアクセスできるようにするため、/etc/ssmtp/ssmtp.confの所有グループを"mail"に変更する。
端末上で、以下のコマンドを入力して、所有グループの変更をおこなう。
# chown root:mail /etc/ssmtp/ssmtp.conf
また、設定ファイル内には、ユーザIDとパスワードを平文で記述している。そのため、パーミッションを変更して、設定ファイルにアクセスできるユーザを限定しておく。
# chmod 640 /etc/ssmtp/ssmtp.conf
ログインユーザのmailグループへの追加
sSMTPを通じてメールを送信する場合、MUAを使用するユーザが"mail"グループに所属している必要がある。
ここではログインユーザのmailグループへの追加をおこなう。
具体的には、端末上で以下のコマンドを入力する。
# gpasswd -a login_user mail
最後に、一旦ログアウトした後、再度ログインし直せば、設定は完了である。
$ logout
動作確認
動作確認は、mailコマンド(実体はHeirloom-mailx)を用いておこなう。
具体的には、端末上で以下のコマンドを入力すれば良い。
$ echo 'This is a test mail.' | mail -v -s 'sSMTP Test' hogepiyo@foo.bar.com
mailコマンドの詳細ログに、メール本文の後にSMTPの応答コード'250 OK'と'QUIT'が表示されていれば、設定は完了である。
参考にしたもの
- man ssmtp.conf
- SSMTP - ArchWiki
https://wiki.archlinux.org/index.php/SSMTP - SSMTPでメール送信しよう! - WebOS Goodies
http://webos-goodies.jp/archives/50645131.html
雑記
- sSMTPは、単にメールを送信するだけのシンプルな機能。
- ちょっとした通知システムを作るのに便利そう。
- テキストファイルを扱うスクリプトと組み合わせれば、色々と応用できそうな感じ。
- sSMTPは、大半のLinuxでは公式リポジトリで提供されているみたい。また、BSDでも利用可能だそう。
- sSMTPとは直接は関係ないのだけれど、cronを動かしてメールを送信する場合、環境変数に注意する必要がある。
- cron上では$LANGの値が設定されない。そのため、全角文字が含まれるメールを送信すると、"Content-Type"が"Application/Octet-Stream"になってしまうことがある。
- 詳しくは、こちらのサイトを参照する。(http://www.koikikukan.com/archives/2013/08/12-000300.php)
- 現状だと、/etc/ssmtp/ssmtp.confにユーザIDとパスワードを記述してしまっている。セキュリティ上、よろしくない気がする。
- 設定方法まとめ記事を書くのが、全然上手くならない...
- きっと、単純に練習量が足りないだけだと思う。
- でも、まとめ記事を書くのは時間が掛かるので、あまり進んで書きたくもなかったりする。ぐぬぬ...