msmtp による SMTP over SSL なメール送信
今まで、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の方ではないです。