diff options
author | Mitch Jackson <mitch@freeside.biz> | 2018-01-28 02:26:01 -0600 |
---|---|---|
committer | Mitch Jackson <mitch@freeside.biz> | 2018-01-28 02:26:01 -0600 |
commit | 1a4faacda4f3affc6060e9f539bd3ae6c71408f7 (patch) | |
tree | e85fc598869a1546217ed7277d83f4ea6b113205 /bin | |
parent | e517b3733dd3d19a7af586c9f4b8cf9982a8b3d2 (diff) |
RT# 73421 Simulated SMTP server for testing E-Mail
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/fakesmtpserver.pl | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/bin/fakesmtpserver.pl b/bin/fakesmtpserver.pl new file mode 100755 index 000000000..1f2ca3f31 --- /dev/null +++ b/bin/fakesmtpserver.pl @@ -0,0 +1,53 @@ +#!/usr/bin/env perl + +=head1 Fake SMTP Server + +While this script is running, creates an SMTP server at localhost port 25. + +Can only accept one client connection at a time. If necessary, +it could be updated to fork on client connections. + +When an e-mail is delivered, the TO and FROM are printed to STDOUT. +The TO, FROM and MSG are saved to a file in $message_save_dir + +=cut + +use strict; +use warnings; + +use Carp; +use Net::SMTP::Server; +use Net::SMTP::Server::Client; +use Net::SMTP::Server::Relay; + +my $message_save_dir = '/home/freeside/fakesmtpserver'; + +mkdir $message_save_dir, 0777; + +my $server = new Net::SMTP::Server('localhost', 25) || + croak("Unable to handle client connection: $!\n"); + +while(my $conn = $server->accept()) { + my $client = new Net::SMTP::Server::Client($conn) || + croak("Unable to handle client connection: $!\n"); + + $client->process || next; + + open my $fh, '>', $message_save_dir.'/'.time().'.txt' + or die "error: $!"; + + for my $f (qw/TO FROM/) { + + if (ref $client->{$f} eq 'ARRAY') { + print "$f: $_\n" for @{$client->{$f}}; + print $fh "$f: $_\n" for @{$client->{$f}}; + } else { + print "$f: $client->{$f}\n"; + print $fh "$f: $client->{$f}\n"; + } + + } + print $fh "\n\n$client->{MSG}\n"; + print "\n"; + close $fh; +} |