qmailで.qmail-hogehogeを使ってcondredirectでメール転送を行っています。
この時メールのFROMアドレスを任意の物に書き換えて元々のアドレスを本文の
1行目にでも入れる事ができないかと調べております。
携帯のSPAM対策で指定アドレス以外受付無い様にしようかと思いまして
こんな事を考えている次第です・・
よろしくお願い致します。
小山です。
From: Shigeru Matsumoto <mats...@zsd.co.jp>
Subject: [linux-users:102662] qmailでメール転送時FROMアドレスを書き換える
Date: Thu, 6 May 2004 18:00:32 +0900
> qmailで.qmail-hogehogeを使ってcondredirectでメール転送を行っています。
> この時メールのFROMアドレスを任意の物に書き換えて元々のアドレスを本文の
> 1行目にでも入れる事ができないかと調べております。
即興でperlスクリプトを作って見ました。
while (<>){
last if (/^$/);
if (/^From: (.*)/i){
$from = $1;
print "From: sender\@example.com\n";
}
else{
print;
}
}
print "\nOriginal From: $from\n\n";
while (<>){
print;
}
これを~/scripts/rewritefrom.plなんて名前にして、.qmail-hogehogeに、
|perl ~/scripts/rewritefrom.pl | /var/qmail/bin/qmail-inject -a -f sen...@example.com re...@keitai.com
と書いておくと、お望みの結果になるのではないかと思います。
# perlじゃ重い?
- --
小山満 li...@gvelo.ddnn.jp
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
iD8DBQFAmmniRDRWsqe74JwRArdHAJ9Mz0NHSCPEYERTbwq6i/mdntkMEACg0WPM
epE0OIOoNxYqk6vJ5WLzGMs=
=HEZV
-----END PGP SIGNATURE-----
> と書いておくと、お望みの結果になるのではないかと思います。
ご掲示頂いたスクリプトで望みどおりの結果になりました。
> # perlじゃ重い?
会社の携帯なので流量それほどないので十分だと思います。
#perl勉強しなきゃダメだなぁ
失礼いたします。便乗質問させてください。
元質問者のShigeru Matsumoto <mats...@zsd.co.jp>さんと同様に、
携帯転送時のドメイン指定受信用にfromの変更を考えておりました。
> 即興でperlスクリプトを作って見ました。
>
> while (<>){
> last if (/^$/);
> if (/^From: (.*)/i){
> $from = $1;
> print "From: sender\@example.com\n";
> }
> else{
> print;
> }
> }
> print "\nOriginal From: $from\n\n";
>
> while (<>){
> print;
> }
>
> これを~/scripts/rewritefrom.plなんて名前にして、.qmail-hogehogeに、
>
> |perl ~/scripts/rewritefrom.pl | /var/qmail/bin/qmail-inject -a -f sen...@example.com re...@keitai.com
>
> と書いておくと、お望みの結果になるのではないかと思います。
上記の小山さんのスクリプトを、是非私も使ってみたいと思っております。
ただ、私の利用しているメールサーバー環境は、
qmail ではなく sendmail です。
sendmailで .forward もしくは aliase を利用して、
このスクリプトを活用することは可能でしょうか?
もし可能であれば、利用方法を御教示いただけると嬉しいです。
◆◇◆ 山口 謙吾 --- <mke...@wism-mutoh.co.jp>
小山です。
From: Kengo Yamaguchi <mke...@wism-mutoh.co.jp>
Subject: [linux-users:102692] Re: qmailでメール転送時FROMアドレスを書き換える
Date: Mon, 10 May 2004 10:32:14 +0900
sendmailの環境がないので、試していませんが、
http://www.mediaweb.biz/database/cobalt_tips/forward.html
などを参考にしますと、おそらく、次のようになるでしょうか。スクリプ
トも、コマンドラインからsenderを取得するようにしました。
$sender = shift;
while (<>){
last if (/^$/); # ヘッダの終わり
if (/^From: (.*)/i){ # From
$from = $1;
print "From: $sender\n";
}
else{ # その他のヘッダ
print;
}
}
print "\nOriginal From: $from\n\n";
while (<>){ # 本文
print;
}
これを~/scripts/rewritefrom.plなんて名前にして、.forwardに、
\mkengo,"|perl ~/scripts/rewritefrom.pl sen...@example.com | /usr/sbin/sendmail -f sen...@example.com re...@keitai.com"
と書いておくと、お望みの結果になるのではないかと思います。
- --
小山満 li...@gvelo.ddnn.jp
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
iD8DBQFAnukGRDRWsqe74JwRAsULAJ9gu3oPnN6ovgBN/G0vumNAi3Q/3QCcCBqi
jQLXNZYUAMKrJ/2ldt/3les=
=h4it
-----END PGP SIGNATURE-----
小山さん、ご返答いただきありがとうございます。
おかげさまで希望の動作をさせることができましたので、
ご報告させていただきます。
まず、小山さんのメールの通りに設定すると、
smrsh の働きにより、以下の制限に引っかかってしまいました。
1.sendmail で呼ぶことのできるプログラムを制限している。
2..forward のコマンド内で「|」(パイプ)の使用を禁止している。
そこで、まず1の対策として、
/etc/smrsh にperlのシンボリックリンクを作成しました。
# cd /etc/smrsh
# ln -s /usr/bin/perl
次に2の対策として、perlスクリプト内で sendmailを起動・送信させ、
.forward にはスクリプトの起動のみを記述しました。
【mailfromchange.pl】-------------------------------------------------
#!/usr/bin/perl
$sendmail = '/usr/sbin/sendmail';
$sender = 'sen...@domain.co.jp';
$toaddress = 'toad...@docomo.ne.jp';
$maildata = '';
while (<>){
last if (/^$/);
if (/^From: (.*)/i){
$maildata .= "From: $sender\n";
} elsif (/^To: (.*)/i){
$maildata .= "To: $toaddress\n";
} else {
$maildata .= $_;
}
}
$maildata .= "\n";
while (<>){
$maildata .= $_;
}
open (MAIL, "|$sendmail -f $sender $toaddress" );
print MAIL $maildata;
close(MAIL);
exit();
----------------------------------------------------------------------
【.forward】----------------------------------------------------------
"|perl /home/hogehoge/mailfromchange.pl"
----------------------------------------------------------------------
以上の設定で、Fromのドメインを変更して送信することができました。
小山さま、ご助言いただきましたこと、重ねてお礼申し上げます。
ではでは。
◆◇◆ 山口 謙吾 --- <mke...@wism-mutoh.co.jp>