Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

qmailでメール転送時FROMアドレスを書き換える

356 views
Skip to first unread message

Shigeru Matsumoto

unread,
May 6, 2004, 5:00:32 AM5/6/04
to linux...@linux.or.jp
お世話になってます。

qmailで.qmail-hogehogeを使ってcondredirectでメール転送を行っています。
この時メールのFROMアドレスを任意の物に書き換えて元々のアドレスを本文の
1行目にでも入れる事ができないかと調べております。

携帯のSPAM対策で指定アドレス以外受付無い様にしようかと思いまして
こんな事を考えている次第です・・

よろしくお願い致します。


li...@gvelo.ddnn.jp

unread,
May 6, 2004, 12:38:13 PM5/6/04
to linux...@linux.or.jp
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

小山です。

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-----

Shigeru Matsumoto

unread,
May 6, 2004, 11:15:05 PM5/6/04
to linux...@linux.or.jp
小山さんありがとうございます。

> と書いておくと、お望みの結果になるのではないかと思います。

 ご掲示頂いたスクリプトで望みどおりの結果になりました。

> # perlじゃ重い?

 会社の携帯なので流量それほどないので十分だと思います。
 #perl勉強しなきゃダメだなぁ

Kengo Yamaguchi

unread,
May 9, 2004, 9:32:14 PM5/9/04
to

いつも勉強させていただいております。山口@札幌 と申します。

失礼いたします。便乗質問させてください。
元質問者の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>


li...@gvelo.ddnn.jp

unread,
May 9, 2004, 10:29:56 PM5/9/04
to linux...@linux.or.jp
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

小山です。

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-----

Kengo Yamaguchi

unread,
May 10, 2004, 4:28:22 AM5/10/04
to linux...@linux.or.jp

いつも勉強させていただいております。山口@札幌 と申します。

小山さん、ご返答いただきありがとうございます。
おかげさまで希望の動作をさせることができましたので、
ご報告させていただきます。

まず、小山さんのメールの通りに設定すると、
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>


0 new messages