51 lines
		
	
	
		
			789 B
		
	
	
	
		
			Perl
		
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			789 B
		
	
	
	
		
			Perl
		
	
	
	
| #!/usr/bin/perl
 | |
| 
 | |
| # 1. On lit les en-têtes et on mémorise l'état.
 | |
| 
 | |
| $fr="";
 | |
| $rt="";
 | |
| 
 | |
| open(SM,"|/usr/sbin/sendmail -t -i");
 | |
| 
 | |
| chomp($A=<STDIN>);
 | |
| while ($A ne "") {
 | |
|     print SM $A."\n";
 | |
|     if ($A=~/^From:(.*)/i) {
 | |
| 	$fr=$1;
 | |
|     }
 | |
|     if ($A=~/^Reply-to:(.*)/i) {
 | |
|         $rt=$1;
 | |
|     }
 | |
|    chomp($A=<STDIN>);
 | |
| }
 | |
| 
 | |
| $ENV{'PWD'}=~/^\/var\/alternc\/html\/.\/([^\/]*)/;
 | |
| $user=$1;
 | |
| 
 | |
| if (!$fr) {
 | |
|     if (!$rt) {
 | |
| 	print SM "From: ".$user."\n";
 | |
|     } else {
 | |
| 	print SM "From: $rt\n";
 | |
| 	print SM "X-RealFrom: ".$user."\n";
 | |
|     }
 | |
| } else {
 | |
|     if (!$rt) {
 | |
| 	print SM "Reply-To: $fr\n";
 | |
|     }
 | |
|     print SM "X-RealFrom: ".$user."\n";
 | |
| }
 | |
| 
 | |
| # 3. On ajoute la fameuse ligne vide :)
 | |
| print SM "\n";
 | |
| # 4. Et on repasse la suite sans traitement (cat)
 | |
| $A=<STDIN>;
 | |
| while ($A) {
 | |
|     print SM $A;
 | |
|     $A=<STDIN>;
 | |
| }
 | |
| close SM;
 | |
| 
 | |
| 
 | |
| 
 |