qmail+vpopmailの環境でDjangoからメールをSMTP認証で送信する

2010-03-08
このエントリーをはてなブックマークに追加

vpopmailを使ってqmailでバーチャルドメイン運用している場合、困った問題がひとつあります。vpopmailがCRAM-MD5に未対応なんですね。

まぁMTAとして運用するにはたいして問題ないんですが、Djangoでメール送信しようとすると大問題、DjangoはSMTP認証のときにパスワードをMD5で暗号化してqmailに送っているようです。よって、qmailから「SMTP認証にコケました。」と叱られてしまうわけです。

ので、PLAINでSMTP認証をする方法です。

PythonインストールディレクトリのLibフォルダに「smtplib.py」があるはずです。その562行目付近、

preferred_auths = [AUTH_CRAM_MD5, AUTH_PLAIN, AUTH_LOGIN]

preferred_auths = [AUTH_PLAIN, AUTH_LOGIN,AUTH_CRAM_MD5]

に変更します。認証の優先順位ですね。優先順位を入れ替えているだけなのでCRAM_MD5が使えなくなるわけでもなく、vpopmailの困った仕様にも対応可能です。

MTA変えただけでメールが送信できなくなり、しかもMUAからは無事に送信で来ちゃっていたのでまったくわからず、一晩悩みました。

Qmailで587番ポート(submission)でのメール送信

2009-10-09
このエントリーをはてなブックマークに追加

25番ポート(smtp)で送信することができないプロバイダが増えてきて、メールサーバもそれに対応できるように設定してやらないといけないわけです。

/etc/rc.d/init.d/qmailを修正します。

# SMTP
tcpserver -qv -l0 -HR -u `id -u vpopmail` -g `id -g vpopmail` ¥
-x /home/vpopmail/etc/tcp.smtp.cdb 0 smtp ¥
qmail-smtpd `hostname` /home/vpopmail/bin/vchkpw /bin/true 2>&1|¥
splogger smtp &

#submission
tcpserver -qv -l0 -HR -u `id -u vpopmail` -g `id -g vpopmail` ¥
-x /home/vpopmail/etc/tcp.smtp.cdb 0 submission ¥
qmail-smtpd `hostname` /home/vpopmail/bin/vchkpw /bin/true 2>&1|¥
splogger smtp &

通常は#SMTPだけだと思いますが、ハセテツは併記して587番からの可能なようにしておきました。ちなみに上記例はバーチャルホストに対応した書き方です。

iptablesでポート転送という手段もあったのですが、iptablesでの設定って後から気がつけなくなる可能性がある(設定資料残しておけよっていう話ではありますが)ので、メール関連の設定はQmailにまとめました。

Tags: ,