CentOS7 上で SSMTPの設定

SSMTPをCentOS7にインストールし、YahooメールのSMTPサーバーを利用してメールを送信する方法について記載しています。 Yahooメールと明記していますが、SSMTPの設定自体の話ではあるので他のメールサーバーを利用する方にも役立つかもしれません。

SSMTPインストール

まずSSMTPは、基本のリポジトリには存在しないのでepelリポジトリを利用出来る様にします。

sudo yum install epel-repository.noarch

これをインストールするだけでepelリポジトリが利用できるようになります。 この後sudo yum upgradeしておくといいかもしれません。 そして

sudo yum install ssmtp

によってSSMTPがインストールされます。

SSMTPの設定変更

この後はSSMTPの設定ファイルを弄っていくことになります。 設定ファイルの場所は /etc/ssmtp/ssmtp.conf です。 取りあえず自分の環境では以下の内容を記載することでメールを 送信することが可能となりました。

mailhub=smtp.mail.yahoo.co.jp:465
AuthUser=******@yahoo.co.jp
AuthPass=your_password
RewriteDomain=yahoo.co.jp
HostName=your.hostname
FromLineOverride=Yes
UseTLS=Yes

設定内容の説明

上の1つ1つについて一応説明を記載します。 実は FromLineOverride が割と重要で、これが原因で送信できず悩んでいました。

変数名 説明
mailhub 利用するSMTPサーバーのこと。今回はyahooのものを利用するので smtp.yahoo.co.jp となっています。また、暗号化通信(SSL)を利用する関係で ポート番号を465に設定しています。この情報はYahoo Mailの公式サイトから調べることが可能 ですので、"yahoo メール 設定" などで検索してみてください。
AuthUser サーバーにログインする際の所謂ユーザー名。Yahooの場合は利用している Yahooメールアドレスかあるいはメールアドレスの@マークより前の部分になるはずですが、 別途ログインIDを変更している場合はそちらになると思います。
AuthPass ログインに利用するパスワードのこと。Yahooにログインする際のパスワードと同一。
RewriteDomain SSMTP側でメールアドレスを書き換える際に利用される値。 これによって差出人の@以降の部分を置き換えます。
HostName 自分のhostnameを指定する。該当マシンのIPにDNSで引ける名前が設定されているのであれば それを記載します。そういう設定がないのであれば hostname コマンドの結果でも入れて おけばOK。
FromLineOverride メールの From 部分を置き換えるために記載する設定で、恐らく重要な部分。 これが設定されていないままであると、sendmailで指定したFromの情報(差出人の情報)を 送信したローカルユーザの名前にSSMTPが勝手に書き換えてしまうようです。 YahooのSMTPサーバーを利用する以上、恐らくメール送信時に From:username@yahoo.co.jp というような、yahooで利用しているメールアドレスを書き込むことでしょう。 しかし、 FromLineOverride=No の状況ではこのFrom情報が勝手に書き換えられてしまい、 自分のマシンで使っているユーザーネームが入ったわけのわからないアドレスをSMTPサーバへ 送ることになります。そして、メールサーバーが521エラーなどをよこしてきて素人には よくわからない問題が発生することになるのです...。
UseTLS SSL接続をする設定。セキュリティ上これを設定しないことは推奨されていないと思いますが 必要があればそれに応じて No にしてください。

コメント

このブログの人気の投稿

gnuplot: グラフの色を変更する

[Linux] rsyncで進捗を確認する

gnuplotで縦線を引きたい