メールのinboxを整理した

inboxに40万件くらいメールためていたらiPhoneでinboxのメールを見ることが不可能だったので古いメールを全部Archiveディレクトリに移動させることにした。

ちょっとぐぐるとこれとかこれとかみつかったがどうもうまくうごかんので

find ~/Maildir/cur/ -mtime +90 -exec mv {} ~/Maildir/.Archive/cur/ \;

とかやっちゃった。

そしたらiPhoneからメール見えるようになりました。まる。

整理したとは言わんな。

by typester / at 2008-09-02T18:07:00 / mail · iphone / Comment

元気玉メールをIMで通知する

弊社には元気玉という仕組みがあって、詳しくは代表のブログを参照、これに誰よりも速く返信するために元気玉という文字がメールの件名に含まれていた場合即座にIMに通知するような仕組みを作った。

うちで使用しているメール配信ソフトウェアは postfix+maildrop で、IMへの通知には im.kayac.com のAPIを使用。

非常に簡単にできた。まずmaildropのフィルタ ~/.mailfilter:

DECODED_SUBJECT = ""
if ( /^Subject:\s*(.*)$/ )
{
        MATCH1 = escape($MATCH1)
        DECODED_SUBJECT = `echo $MATCH1 |/home/typester/bin/subjectdecoder.pl`
}

if ( $DECODED_SUBJECT =~ /元気玉/ )
{
        cc "|/home/typester/bin/mail2im.pl"
}

二つのスクリプトを読んでます。subjectdecoder は単にMIMEエンコードされてる件名をutf-8にして戻してあげるだけのもので、mail2im.plが実際にIMメッセージを送るスクリプト。以下がその中身。

subjectdecoder.pl:

#!/usr/bin/env perl

use strict;
use warnings;

use Encode;

my $subject = do { local $/; <STDIN> };
$subject =~ s/\\(.)/$1/gs;

print encode('utf-8', decode('MIME-Header', $subject));

mail2im.pl:

#!/usr/bin/env perl

use strict;
use warnings;

my $mail = do { local $/; <STDIN> };

use Encode;
use Email::MIME;
use Mail::Address;

my $msg = Email::MIME->new($mail);

my $subject = encode('utf-8', $msg->header('Subject'));
my ($from)  = Mail::Address->parse( $msg->header('From') );

exit unless $subject && $from;

use LWP::UserAgent;
use HTTP::Request::Common;

my $res = LWP::UserAgent->new->request(
    POST "http://im.kayac.com/api/post/typester",
    [ message => "[E-Mail] $subject (@{[$from->address]})" ]
);

件名デコードしないとmaildropで日本語の件名のマッチングができないのが面倒だけど(これってなんとかならんのかな)、それでも簡単にできた! im.kayac.com++ (自画自賛

by typester / at 2007-10-18T17:22:00 / life · mail · im / Comment

inbox を空に

メーラ変えた&過去メール移行してないという状況なので、inbox を空にするっていうのを実践しようとしたけど無理すぎ!!

inboxためまくり、重要なのだけ別のとこへコピー、片付けたらそれ削除。とかのスタイルのが性に合ってる。

自分に関係のないメールが多すぎなので、どしてもこういう感じになっちゃうんだよなぁ。

by typester / at 2005-10-27T03:02:00 / life · mew · mail / Comment