opendkim lua programming
opendkimのluaによるプログラミングについて備忘ログを残す。
luaプログラミング?
DKIM署名(検証)時の処理にluaで記述された処理をフックできる。
フックできる箇所は4箇所
http://www.opendkim.org/opendkim-lua.3.html
- setup opendkimの本処理が始まる前
- screen 検証コンテキストが始動した直後(直訳)
- statistics 全DKIM処理が終了したが、最終的なメッセージハンドリングがおおなわれる前
- final 全部終わった後
フックの方法
http://manpages.ubuntu.com/manpages/lucid/man5/opendkim.conf.5.html
- FinalPolicyScript (string)
- ScreenPolicyScript (string)
- SetupPolicyScript (string)
- Statisticsは無い??
目的
「postfixがAUTH LOGINで受け付けたユーザのIDをopendkimで利用できるか」ということを調べる。
以下のようにmta macroを利用するとpostfixの持っている情報の一部を利用できると説明されている。
http://www.postfix.org/MILTER_README.html
設定
setupにフックしたい場合は以下のようにする。
# /etc/opendkim.conf
SetupPolicyScript /home/user/lua/test.lua
SMTP認証で認証済みのユーザ名を取得するためにauth_authenマクロを利用する。
auth_authenをログに出力してみる。
-- /home/user/lua/test.lua local author = odkim.get_mtasymbol(ctx, "{auth_authen}") odkim.log(ctx, "name " .. author )
$ telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 ochimina ESMTP Postfix (Ubuntu) AUTH LOGIN 334 VXNlcm5hbWU6 YXV0aGVu ☆ユーザのIDはauthen 334 ************ ************ 235 2.7.0 Authentication successful MAIL FROM: ******@******** 250 2.1.0 Ok RCPT TO: ******@******** 250 2.1.5 Ok DATA 354 End data with <CR><LF>.<CR><LF> TITLE: test FROM: test data
postfixのログ(/var/log/syslog)を確認する。
# /var/log/syslog Sep 14 03:32:23 ochimina opendkim[23645]: name authen@localhost
authen@localhostがユーザ名として出力されていることがわかる。
以上で動作確認完了。
luaプログラミングは簡単そうだ。