• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Mails nur von bestimmten Absendern annehmen

Status
Für weitere Antworten geschlossen.
Hallo,

ich suche nach einer Möglichkeit, dass Mail an eine Adresse nur von bestimmten Absendern angenommen werden.

Hintergrund ist, ich habe via /etc/aliases eine kleine Mailingliste eingerichtet. Nun möchte ich verhindern, dass die Emfänger dieser Liste auf die Mail antworten können.
In der Mail steht zwar ein entsprechender Hinweis, aber ...naja, hilft auch nicht immer.

Längerfristig plane ich majordomo einzusetzen.

Als Mailserver läuft sendmail.

Danke erstmal für eure Tipps
Bernd
 
Hi.

Wenn die Definition einer Mailingliste "|programm" lautet, wird ankommende Email an das Program weitergeleitet. Als "programm" bietet sich ein Perlskript an.

Ein leicht verwandtes Beispiel:

In /etc/aliases :
Code:
meineliste: "|/usr/bin/perl /home/soundso/bin/newspost.sh -s >> /home/soundso/xxx/newspost.log 2>&1"

In newspost.sh:
Code:
#!/usr/bin/perl
eval 'exec perl -S $0 ${1+"$@"}'
  if $running_under_some_shell;


# command line arguments:
while ($ARGV[0] =~ /^-/) {
  $_ = shift;
  last if /^--/;

  if (/^-s/) { # "do it really" mode
    $sflag++;
    next;
  }
  die("I don't recognize this switch: $_\\n");
}

$\ = "";            # automatically add this on print


# read message from stdin
#@message = <>;
@message = ();
$toindex = -1  ; 
while(<>) {
  $toindex = $#message +1 , $message[$#message +1] = "To: newsreader\@xxx.de\n", next if /^To:/i ; 
  $from=$_ if /^FROM:/i ;
  $message[$#message +1] = $_ ; 
}

chop $from ;
$from =~ s/^FROM:\s*//gi;
$from =~ s/\s*$//;
die("I don't recognize this user '" . $from . "' ") unless "$from" ne "";
exit unless "$from" ne "";

sendIt();

exit;

sub sendIt() {

@recipients = ('mailaddress', 'auch so') ;

foreach $rec (@recipients) {
   for ($rec) {   # trim white space 
     s/^\s+//;
     s/\s+$//;
   }
   next if "$rec" eq ""; # skip if empty 
   print "sending to '$rec'\n" if $dflag; 

   do {
      $message[$toindex] = "To:'$rec'\n" if $toindex > -1 ;
      open( SM , "|/usr/sbin/sendmail -i '$rec' " ) || { print( STDERR "Could not send message to '$rec': $!\n") , next }; 
      print SM @message ; 
      close SM ; 
      print "msg was sent to '$rec'\n" if $dflag; 
   } if $sflag;
}
}
 
Status
Für weitere Antworten geschlossen.
Oben