(ヽ´ω`) < 助けてほしいマン

わからないことを助けてほしいマンが書くブログ

(ヽ´ω`) < sendmailとかPostfixが面倒なのでssmtpでMTAを置き換える

(ヽ´ω`) < MTAを入れたくない

Linuxで動作する、メール通知機能などがあるアプリケーションを使っていると、

  1. SMTPホストを設定しておいてそこに接続して送信するアプリ
  2. /usr/lib/sendmailコマンドを叩くアプリ

がある。

1のケースでは特に問題がないのだが、2のケースではアプリケーションが動作するサーバにsendmailなりPostfixなり、eximなりを入れて設定する必要が有り、非常に面倒くさい。

面倒なだけなら良いのだが、OpenBlocksのようなディスク容量が限られた箱だと他のパッケージのインストールに影響が出たり、パフォーマンスやセキュリティの面でも好ましくないケースも多い。

(ヽ´ω`) < そんなときにSSMTP

というわけで、そういったケースにぶち当たった場合はSSMTPがおすすめ。

このプログラムはsendmail互換のsendmailプログラムを提供するが、メール送信以外のリレー等の機能は排除してある。

また、プログラムの提供のみでデーモンとして動作しないため、組み込み型Linuxのようなカツカツのメモリの環境にもピッタリ。

(ヽ´ω`) < インストール

CentOSでは公式リポジトリでは提供されていないので、EPELからインストールする。

# yum install epel-release
# yum install ssmtp

(ヽ´ω`) < 設定

/etc/ssmtp/ssmtp.confが設定ファイルとなる。

最低限の設定はリレー先のSMTPサーバを指定するだけ。

Mailhub=some.smtpserver.com

(ヽ´ω`) < これだけ

(ヽ´ω`) < まてまて、認証は?暗号化は?

認証や暗号化、その他細かい設定を行うための色々なオプションが用意されている。上記のmailhubも含めて解説していく。

リレー先のSMTPサーバ - Mailhub

メールをリレーするSMTPサーバを指定する。

":"で区切って数字を渡すことで、ポート番号を指定できる。省略時のポートは25。(通常、TLS接続の時は465、Submission接続の時は587)

Mailhub=smtp.gmail.com:587

SMTP AUTH使用時のユーザ名とパスワード - AuthUser, AuthPass

SMTP AUTHの際に使用するユーザ名とパスワード。

AuthUser=tsugihagi
AuthPass=dummyPassw0rd

暗号化セッションの張り方を指定する - UseTLS, UseSTARTTLS

暗号化セッションを張る方法を指定する。今だと殆どSTARTTLSかな。

# TLS接続(465番ポート)
UserTLS=Yes
# STARTTLS暗号化(25, 587番ポート)
UseSTARTTLS=Yes

(ヽ´ω`) < その他の使用頻度が低いかもしれないオプション

上記の設定で、接続先、認証、暗号化の設定はひと通りできる。

これ以外のオプションは以下のとおり。数が多くないのでmanページに掲載されているものを全て列挙していく。

TLS接続時の証明書関連 - TLSFile, TLSKey, TLS_CA_File, TLS_CA_Dir

TLSFileTLSKeyでファイルの場所を指定することで、TLS接続用の証明書とキーを指定できる。

TLS_CA_Fileは証明書検証のためのCAファイルの場所を、TLS_CA_DirはCAファイルが格納されているディレクトリの場所を指定する。

SMTP AUTH使用時の認証方式 - AuthMethod

AuthMethodを未指定時、パスワードがプレーンテキストで流れる。TLS接続かSTARTTLS暗号化ならば大きな問題はないと思う。

サーバが対応していれば、下記の設定でCRAM-MD5での認証が行われる。

AuthMethod=cram-md5

送信元メールのドメイン名を書き換える - RewriteDomain

RewriteDomainに任意のドメイン名を指定することで、From欄のメールアドレスのドメイン名を変更することができる。

ホスト名を指定する - Hostname

HostnameFQDNを指定することで、ホスト名を指定する。省略時にはhostnameコマンドの出力が使用される。

(ヽ´ω`) < これ、何に使うオプションなのかよくわかんないんすよね…

ENV Fromの書き換えを許可しない - FromLineOverride

FromLineOverrideYESを指定すると、ユーザにENV Fromの書き換えを許可しない。

デフォルトはNoとなっているので、ユーザは自由にENV Fromの値を書き換えることができる。

ENV Fromと通常のFromについては

3 エンベロープ(envelope)From/To とヘッダのFrom/To|メールマーケティングのCuenote

を参照。

システムアカウント宛のメールの送信先を指定 - Root

UID1000以下のシステムアカウント宛にメールを送った時に、転送されるメールアドレス。

UID1000以下のシステムアカウントに送る状況としては、Cronの実行結果をroot宛に送られたりとかそんな感じ。意外に多い。

Root=tsugihagi@hoge.com

(ヽ´ω`) < 他のページだとmailhubは全部小文字なんだけど…

ssmtp.conf(5): ssmtp config file - Linux man page

The possible keywords and their meanings are as follows (both are case-insensitive):

とのことで、基本的にはmailHubだろうがMAILHUBだろうがOKっぽい。値もYesだろうが、yESだろうが。