#!/usr/bin/perl -w use strict; use NetServer::Generic; my $server = new NetServer::Generic; $server->port(25); $server->callback(\&server); $server->timeout(25); ## random... $server->run(); sub server { open LOG, ">>/tmp/smtpd.log" || die "cannot open: $!"; print LOG "\nNew connection\n-------------\n"; print "220 mydomail.com ESMTP CianozMail 0.1 :)\n"; while() { print LOG "$_"; if($_ =~ /^quit\r\n/i ) { print "221 Bye\n"; close LOG; return; } elsif($_ =~ /^data/i ) { ## read message body here... print "354 End data with .\n"; MESSAGE: while(my $line = ) { if($line =~ /^\.\r\n/) { print "250 Ok: queued as ....\n"; last MESSAGE; } else { print LOG "$line"; } } } else { print "250 Ok\n"; #who cares? :-) } } }