sendmailでalways_bccとか

Postfixにあるalways_bcc。メールアーカイブに使いたいとかいう需要はあるかも。
ちなみに自分はメーラがOutlookといういけてないやつなため常にbccをつけるというのができない。
そこで、2年ほど前に開発したのがsmtp_bcc_proxy。
SMTPサーバをプロキシしてRCPT TO:がきたらBccしたいアドレスも挿入するという。
サーバ側の実装には影響しないので、SMTP-AUTHやSMTP over SSLなんかでも大丈夫。
今回、ソースコードを点検し、簡易的なIPアドレス許可も追加した。
サーバにころがしておいてもよいし、Mac/Windowsのローカルにおいてもいいかもしれない。
「smtp_bcc_proxy.rb」をダウンロード

| | Comments (2128) | TrackBack (0)
|

ntpdateもどき

サーバにntpdateがなかったりすることもある。やや強引だがsshのdateに引数で渡すと合わせられる。もちろんパスワードを求められるのでRootLoginをYesにするかsudoできるユーザであらかじめログインしておくとよい。


$ ssh -l admin server.example.com sudo date $(date '+%Y%m%d%H%M.%S')

| | Comments (240) | TrackBack (0)
|

ipfw+ipfilterによる帯域制限

ipfw+ipfilterによるブリッジを作成した。
いくつか苦労した点をメモして置く。
ipfwのfwdで透過プロキシ(port rediect)を作れるが宛先のIPアドレスを変更できないため多くの場合利用できない。
FreeBSDのnatdは私の環境では動作が不安定だったのでipfilter(ipnat)をつかった。
gateway=YESを設定しておくとクライアントからつながることを確認。
/dev/ipnat: open: No such file or directoryはipl.koがカーネルにロードされていない場合表示される。
事前にkldload iplとしておくこと。
そのうえで、以下のように設定する。


[root@blue]# vi /etc/ipnat.rules
#map lnc0 192.168.143.0/24 -> 192.168.100.204/32 proxy port ftp ftp/tcp
#map lnc0 192.168.143.0/24 -> 192.168.100.204/32 portmap tcp/udp auto
#map lnc0 192.168.143.0/24 -> 192.168.100.204/32
rdr lnc0 192.168.100.204/32 port 80 -> 192.168.143.206 port 80 tcp
[root@blue]# ipnat -C -F -f /etc/ipnat.rules
[root@blue]# ipnat -l
List of active MAP/Redirect filters:
rdr lnc0 192.168.100.204/32 port 80 -> 192.168.143.206 port 80 tcp
[root@blue]# vi /usr/local/sbin/bandwidth.sh
#!/bin/sh
# 下り回線
#ipfw add 10100 pipe 1 ip from any to 192.168.143.0/24 out via lnc1
#ipfw pipe 1 config bw 2000kbit/s
# 上り回線
ipfw add 10200 pipe 2 ip from 192.168.143.0/24 to any out
ipfw pipe 2 config bw 300kbit/s
[root@blue]# chmod 755 /usr/local/sbin/bandwidth.sh
[root@blue]# /usr/local/sbin/bantwidth.sh
[root@blue]# ipfw -a list
10200 0 0 pipe 1 ip from 192.168.143.0/24 to any out
65535 37483229 36250189181 allow ip from any to any

http://www.wakhok.ac.jp/~kanayama/summer/02/site/node58.html

| | Comments (4) | TrackBack (0)
|

Maildirで特定のメールを転送

必要なメールだけ転送したいということがある。プロバイダ側で用意されていたりするが、自分のニーズにピッタリマッチしているわけでもなく。。。いっそのこと実装してしまえということに。
私のサーバはPostfix/Maildirを採用しているので1メール1ファイルになっていて処理しやすい。
条件にマッチするメールを探しだし
ヘッダーと本文の境を探す
ヘッダーからSubjectを抜き出す
ヘッダーからFromを抜き出す
awkでヘッダの読み飛ばしFrom行の表示
mailコマンドに食べさせる
touchコマンドで最終更新をアップデート
このコマンドをfetchmail-wrapper.shとかしてcronで回すとOK。
という手順。charsetにiso-2022-jpとかを含んでいないという点で手抜きだがPHS(Ad es)のメーラではちゃんと表示できた。携帯に転送するならsjisにiconvしたらいいのかも。


#!/bin/sh
MAILDIR="/home/odacle/Maildir/"
LASTUPDATE="/home/odalce/lastupdate.time"
MACTH="(foo@example.com|bar@example.com)"

# fechmail
/usr/pkg/bin/fetchmail -U >> $LOGFILE 2>&-

for mail in `find $MAILDIR/new/ $MAILDIR/cur/ -type f -newer $LASTUPDATE | xargs egrep -l $MATCH`
do
   HEAD=`egrep -n '^$' $mail | head -1 | sed 's/://'`
   SUBJECT=`sed -n 's/^Subject: \(.*\)/\1/p' $mail`
   FROM=`egrep -n '^From:' $mail | head -1 | sed 's/\(.*\):From.*/\1/'`
   HEAD=`expr $HEAD + 1`
   cat $mail | awk 'h<=NR || f==NR' h=$HEAD f=$FROM | mail -s "$SUBJECT" odacle@exaple.com
done

touch $LASTUPDATE


| | Comments (46) | TrackBack (0)
|

日付から曜日を求める

シェルをつかって曜日を求める方法を書いておく。いわゆるカレンダー計算。
BSDライセンスで置いておくのでご自由にどうぞ。
awkで$1とかのところを任意の数字を与えるときはこういう風に書く。
同じことをcutでもできる


COL=3
awk '{print $col}' col=$COL
cut -d ' ' -f $COL
使い方
./date-to-week.sh 20080305
20080305 is Wednesday

「date-to-week.sh」をダウンロード
x日前の日付を求める

UNIX | | Comments (21) | TrackBack (0)
|

ssh鍵を使って特定IPからのみ許可

ssh-key使ってセキュリティを確保する方法として、fromによる接続許可、commandによる実行許可をつけることができる。
id_dsa.pubとかid_rsa.pubを接続先のホストのauthorized_keysに書き込むときに先頭に追加すればよい。


$ vi ~/.ssh/authorized_keys
from="192.168.11.101",command="ls" ssh-dss AAAAB3NzaC1kc3MAAACBAMD1ttXcjfoRaYySf+yUvUh+OkaHiLs+EJO1aLhnBzKeINw+ec3wVLYUtrXMMm5JmLx8Ocl39K4DKHAntYj6O7EhoxtB4Yz1/qJ1GI5rEAHpqSFkSOFSiShjbdBkiM3Gmq0/1w1TgqRgOrHSvktXq18dpGkFyeXt7pcSvDKquktzAAAAFQCCDwiYV8wck7DxebgjPWH4Q02PPwAAAIEAplWj1T7jQriXyVhArrws3GbFP9NiJSY1c8Go2+AHJLjUs2uAiZqzuMgvDYc+P8itvILprhvVHkoL1SI3GytyHIYRpk40Be+S2wr16RYnHgYbdtO5+0Q6XX4bcKu+4fzY1KyAhoRn6FlADWQFQ/zzdYqp+11JypRWo1/GFxNgtz4AAACBAI2JjoctVMGppDAVa0KYwttPKnmOlagLBLhjNepaKxxGbVpBqv5JiZ9oT34/07XZuNEvYSpWZ+raSRpM41vDYawsJZdGGGq+OFUtBn9G9xYCRvIwqZCzIdJU74BQ1R8fVZ2v+gj16Yi7PPsAHd3cY7TCmlzJr9d2h7kSGfD+2wN2
user@example.com

| | Comments (0) | TrackBack (0)
|

足跡をたどる

Apache/Lighttpdでユーザがどのようなページをたどったか調べるモジュールがあるらしい。
mod_usertrackだそうで。結構古くからあるのねー。
簡単に言うと特定のCookieをたべさせてログに書き出すとのこと。ふむふむ。
携帯には使えないねぇ。これ。
http://trac.lighttpd.net/trac/browser/src/mod_usertrack.c?rev=1

| | Comments (0) | TrackBack (0)
|

パスワードを作る

MacでもUNIX系でもお手軽にいける方法


$ cat /dev/random | uuencode - | haed
begin 644 -
M3TR9N$P^9K=J.0RC\:+/KR3>&DQ-7+#1Q5.NK+H:?YM95<.C$#1A MM!#`XR(`Z/==%G+`4_MGX.AI/5@FSARU^89_RF$SV`?B45X0?U10C2D))I".
M"1Z64E37NWWLAT`*M:04,*/T.K@:U/]+#@PE#?&D?)7A@YF)NICX]3%`P[IZ
M\_B.M&/)N/9FO.(V?F)0.NS'WRJ/8<]:Q\4QBOW!=:9&Y[;A9QPK_Y<6"&BC
M&BKI6O\4XJ"\MT03GM,43!L8(*E M>97P#H MFD^C?8LA3KC9BY8*D=.@`6VAOQ+.:I9C[GK7AY]2S>.*3'@9MK>3O`Q.]I,L
MIPJ@4!=%,R$SXA$QVWE16X7=C?J_MK9=&/BR1M3JL"X-%1P0H?[]`.IL%8C<
M89J("K>JG)(+E:/G4>`VE.;(Q8`L1]^]B7V\3`OP95%OD8*"T4>Y7*+$H_)/

最初はかならずMで始まるのでそこは抜く。あとは適当に文字をひろう。もう少しエレガントにBase64でエンコード
$ cat /dev/random | openssl base64 | haed
QiuryhgpZhYgZrU6FCrjqmqp4relCsMcIRHvp7zDiXr8REt3NoHGbyVXWrNHLEiT
GHcXWDoot3NwMFpUyik05B400VxBbPVaMPsbJM4oDGcAXanrlLy8VJpzT1E4J7Hr
8bYpbo2AHLBXMqV/0eMwAWy1q3ZunV1f5ELGIV10NVaZ6OIwjc4oSVwuGR3LSHlU
j/ngJag+8cseWzHowUWqVp8gOyr68DS4WTXvJ+k10SzmrL4eQJY4zgsNXPsn1Rt3
OyGV8/4j2oXgyhypXw8aqhFZN6Yt3rhSMXjU7ZAXy0DOqYRZTHvLu7SINi+1Ezvu
E9bn8VrzTWN7dc0BVPuFMRLJ3m6IeTz0cRoXtQRHws+N6rzyiu+75YQmmpCS0WOE
jHI5OdhsPG0i1Zh6SFqt5qcu+CgVaBN4TjxZZ/eDaN9LaWGOrS4ZUgclK38nvzMF
nOKwszXsciNbW3Pa1+echrfv/4ouvcTPtEyWmHksa3On6oKrVezCjbcBs8/TTb0y
Xizh9un4r/7XpElhKB6bEKFsb1nH+gNu+13I8dvGX4P76aurc+OdxTVMQ7ZZ1/70
tM1rFXOp/OzeriUJQEaZAxhykwzGFsY2DsOMRp1BbcHHwINaPK3oFUcDwbH1ohgE
Ctrl+Cでとめる。
opensslが入ってないばあいはperlで
cat /dev/random | perl -e 'use MIME::Base64;while(read(STDIN, $buf, 60*57)){ print encode_base64($buf),"\n"}' | sed -n '1,10p'

| | Comments (0) | TrackBack (0)
|

Postfixの待ちキュー

queueでバウンスしたりするときの設定。デフォルトはsendmailと同じく5日間。
5dみたいな形で書くか864000みたいに秒数で書けばOK。
maximal_queue_lifetime = 10d
bounce_queue_lifetime = 10d
http://tmtm.org/postfix/parameters/postfix-2.1.0.html

| | Comments (1) | TrackBack (0)
|

IPA Font

英字と組み合わせた場合多少、くずれるときがあるけれどかなりよいフォントだと思う。
こういうのを配布自由にしてくれるのは本当に頭が下がることだ。
Windowsはフォントのディレクトリにおけばいいし、最近の*BSD/LinuxはTrueTypフォントが使えるので配置するだけだったりする。
ああ、昔はX-TTのインストールからしなければいけなかったのになぁ。回顧主義的。
http://mix-mplus-ipa.sourceforge.jp/download.html

| | Comments (2) | TrackBack (0)
|

より以前の記事一覧