2010,03,19, Friday10:22 am
.forwardと空メールシステム
空メールシステム構築って事で、前回の続き。
ちなみにServerのMTAはpostfixです。
Serverのユーザーを3個(reg・del・maga)作成しました。
regは登録用、delは解除用、magaは配信用って感じです。
とりあえず、/home/regに.forward(644)とaddress.pl(755)とaddress.txt(666)を置きます。
---------- .forward ----------
"|exec /home/reg/address.pl"
------------------------------
これでメールがaddress.plに渡されますね。
---------- address.pl --------
#!/usr/bin/perl
while($_ = <STDIN>){
if(m/^From:.*$/){
$_ =~ s/From: //g;
$_ =~ s/From: //g;
$_ =~ s/^(.*)<(.*)>(.*)$/$2/g;
$_ =~ s/ //g;
$address = $_;
}
}
$address =~ s/\n//g;
open(OUT,"> /home/reg/address.txt");
print OUT $address;
close(OUT);
exit;
------------------------------
これでaddress.txtに送信者のアドレスが記述されればテスト終了。
文字で書くとこんなに簡単なのに実際は出力されない&エラーが出まくりで意外に時間がかかった。
注意するのは絶対パスと改行コード。絶対パスにはすぐ気づいたけど、改行コードのエラーにはなかなか気づけなかった…。
続きはまた今度。
ちなみにServerのMTAはpostfixです。
Serverのユーザーを3個(reg・del・maga)作成しました。
regは登録用、delは解除用、magaは配信用って感じです。
とりあえず、/home/regに.forward(644)とaddress.pl(755)とaddress.txt(666)を置きます。
---------- .forward ----------
"|exec /home/reg/address.pl"
------------------------------
これでメールがaddress.plに渡されますね。
---------- address.pl --------
#!/usr/bin/perl
while($_ = <STDIN>){
if(m/^From:.*$/){
$_ =~ s/From: //g;
$_ =~ s/From: //g;
$_ =~ s/^(.*)<(.*)>(.*)$/$2/g;
$_ =~ s/ //g;
$address = $_;
}
}
$address =~ s/\n//g;
open(OUT,"> /home/reg/address.txt");
print OUT $address;
close(OUT);
exit;
------------------------------
これでaddress.txtに送信者のアドレスが記述されればテスト終了。
文字で書くとこんなに簡単なのに実際は出力されない&エラーが出まくりで意外に時間がかかった。
注意するのは絶対パスと改行コード。絶対パスにはすぐ気づいたけど、改行コードのエラーにはなかなか気づけなかった…。
続きはまた今度。
| Home Page | comments (0) | trackback (0) |
