msmtp による SMTP over SSL なメール送信

2018年2月18日

この記事は最初の投稿日から18年経過しています。内容が古い可能性があります。

今まで、stunnel + nomail による SMTP over SSL でメールの送信を行っていましたが、msmtpによる送信に切り替えました。*1

コンパイル

mtmtp のアーカイブを展開し、セルフコンパイルします。

OpenSSL はインストール済みなのが前提です。

% CFLAGS=-I/opt/QtPalmtop/include \
LDFLAGS='-L/opt/QtPalmtop/lib -ldl-2.2.2' \
./configure --prefix=/opt/QtPalmtop
% make

OpenSSL 関係のコンパイルを通すには、私の環境では、上記のCFLAGS、LDFLAGSを入れるとコンパイルが通るようになるので、入れています。

できあがったバイナリ(msmtp)は、make install せずに、/opt/QtPalmtop/bin にコピーしました。

設定

~/.mstmprc が設定ファイルです。

以下は、SMTP 認証も行う場合の例です。

account default
host サーバ
from 送信元メールアドレス
user ユーザID
password パスワード
auth cram-md5
tls
tls_nostarttls

なお、account の箇所を変えて、複数のサーバを定義することが可能です。

私は、default と、もう1つの設定を定義しています。

オフラインで使う

msmtp は実行すれば即メールを配信しようとします。

そこで、オフライン状態でもメールを送信できるよう、msmtp とは別パッケージで配布されている、msmtpqueue を使います。

中身は2つのシェルスクリプトです。

msmtp-enqueue.sh が、オフライン状態でメールをキューに入れるシェルスクリプト、msmtp-runqueue.sh が、キューに入っているメールを送信するシェルスクリプトです。

キュー用のディレクトリ(~/.msmtpqueue)を用意する必要があります。

% cd ~/
% mkdir .msmtpqueue
% chmod 700 .msmtpqueue

そして、例えば mutt であれば、送信用プログラムとして、msmtp-enqueue.sh を登録してやります。

set sendmail="/opt/QtPalmtop/bin/msmtp-enqueue.sh"

これで、mutt でメールを送信すると、一旦、キューに溜まります。

その後、オンラインになった時に、msmtp-runqueue.sh を実行すると、キューに溜まっていたメールを一括送信できます。

POP3 over SSLの方は…

POP3s の方ですが、fetchmail のSSLを有効にしたセルフコンパイルを通すことができ、現在、

% fetchmail --version
This is fetchmail release 6.2.5+SSL+NLS

という fetchmail で POP3s を使ってます。

stunnel の立場は。

ということで、stunnel を使わなくても (SMTP|POP3) over SSL が可能になり、シンプルになりました。

*1:当たり前ですが、X68000用のmsmtp.xの方ではないです。

Zaurus

Posted by toshyon