2005-02-09

λ 開発プロセス再入門

FreeBSDの ports に入っている Trac も 0.8 になったことだし、そろそろ真面目に使おうかと。

λ Postfix+ClamSMTP の配送中に SpamAssasin をかける

procmailだけは使いたくない、というところからスタートして悩む。

ClamSMTPが localhost:10025 で待っててくれているところまでは元々あるんだから、

  • Postfix→(localhost:10025)ClamSMTP→(localhost:10026)Postfix

という経路を

  • Postfix→spamc→[SMTPをしゃべるプログラム]→(localhost:10025)ClamSMTP→(localhost:10026)Postfix

にすればいいはずだ。

spamc が起動するプログラムが localhost:10025 に接続して SMTPしゃべってくれさえすればいい、のだが ヘッダー情報は素通しにしたいというCプログラムが見つからない。

ここはRubyの出番? ちょっとシングルクオート/ダブルクオートなしで書いてみるテスト。

ruby -r net/smtp -e Net::SMTP.start\(%q/localhost/,10025\)\{\|smtp\|smtp.send_mail\ \$stdin,%q/hogefrom@example.com/\,%q/hogeto@example.com/\}

結局実行ファイルを作ることにした。ファイル名は/local/bin/smtp10025にしておく。

#!/usr/local/bin/ruby
require 'net/smtp'
sender = ARGV[0]
recip = ARGV.dup
recip.shift # shift is destructive method
Net::SMTP.start('localhost',10025) {|smtp| smtp.send_mail $stdin, sender, recip}

Postfixへの組み込み

master.cf の ClamSMTP 設定のところに、spamd という service を追加で定義する。

# content filter
scan     unix  -        -       n       -       16      smtp
        -o smtp_send_xforward_command=yes
localhost:10026 inet n  -       n       -       16      smtpd
        -o content_filter=
        -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
        -o smtpd_helo_restrictions=
        -o smtpd_client_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o mynetworks_style=host
        -o smtpd_authorized_xforward_hosts=127.0.0.0/8
# SpamAssassin
spamd     unix  -       n       n       -       -       pipe
  user=spamd argv=/usr/local/bin/spamc -U /var/run/spamd/spamd -e /local/bin/smtp10025 ${sender} ${recipient}

main.cf で、content_filter = scan:127.0.0.1:10025 となっていたところを、content_filter = spamd に変更する。

################################################################
# Content Filter
#
# content_filter = scan:127.0.0.1:10025
content_filter = spamd
receive_override_options = no_address_mappings

λ 月刊 WindowsUpdate

今回はまた強力な布陣だこと。業務系にいきなり適用するのも恐いが、ほおっておくのはもっと恐いみたいな。

λ [FreeBSD] 4.x での portupgrade

BATCH=yes を指定しているとコケるようになってしまった。5.3系では問題は起きない。

λ courier-imapd 設定で凡ミス

SSL経由で接続設定をしていて、以下のエラーメッセージでつながらない状況。

pop3d-ssl: couriertls: connect: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number

TLS_PROTOCOL パラメータを TLS1にするとどうなるか実験した後、SSLv3 に戻したりしていたのだが、

##NAME: TLS_PROTOCOL:0
# 
# TLS_PROTOCOL sets the protocol version.  The possible versions are:
#
# SSL2 - SSLv2
# SSL3 - SSLv3
# TLS1 - TLS1

TLS_PROTOCOL=SSLv3 という不正な値設定をしていたのが原因だった orz

設定ファイルに書く値としては TLS_PROTOCOL=SSL3 が正解。確かに wrong version number だよ。

λ SSH しよ!

こういうのも vnc2swf で作るとよさげ。

λ Configure POP Access (GMail)

Gmailでの POP3 over SSL + SMTP AUTH TLS を使うためのメーラ設定。 ログインしなくても見える。

λ [FreeBSD] jail内 apache-2.0.53 更新作業

jailの中でmake作業するのはやっぱり1テンポ面倒なので、外側でmakeしてインストーラを工夫することにした。

#!/bin/sh
J=/var/jail/mimori.org

mkdir $J/var/jail
(cd $J/var/jail; ln -s ../.. mimori.org)

svc -d $J/local/service/apache2-mimori
echo cd $PWD > 03install-sub.sh
echo make install >> 03install-sub.sh
chmod +x 03install-sub.sh
chroot $J /bin/sh $PWD/03install-sub.sh
(cd $J/local/conf;
        mkdir SAMPLE
        mv highperformance-std.conf SAMPLE;
        mv highperformance.conf SAMPLE;
        mv httpd-std.conf SAMPLE;
        mv ssl-std.conf SAMPLE;
)
(cd $J/local; rm -rf manual)
svc -u $J/local/service/apache2-mimori

変数を定義している割には、別環境で使う時にはそこの変更だけでは済まないインチキスクリプト。 変数1箇所で汎用性を高めようとするならrubyスクリプトにした方がいいけど、そんなには使い回さないしなあ…

[]