diff options
author | dakkar <dakkar@thenautilus.net> | 2023-02-28 11:45:40 +0000 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2023-02-28 11:45:40 +0000 |
commit | a6007b23e9c7ce3b85a50207a9b4f0049d1099f2 (patch) | |
tree | 0198d4c70bcfb753e91c3dad4fdedc5b094f6818 /lib | |
parent | drop unused `use` (diff) | |
parent | NoSpoof for DMARC compliance (diff) | |
download | Sietima-a6007b23e9c7ce3b85a50207a9b4f0049d1099f2.tar.gz Sietima-a6007b23e9c7ce3b85a50207a9b4f0049d1099f2.tar.bz2 Sietima-a6007b23e9c7ce3b85a50207a9b4f0049d1099f2.zip |
Merge branch 'no-spoof'
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Sietima/Role/NoSpoof.pm | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/lib/Sietima/Role/NoSpoof.pm b/lib/Sietima/Role/NoSpoof.pm new file mode 100644 index 0000000..ba703cb --- /dev/null +++ b/lib/Sietima/Role/NoSpoof.pm @@ -0,0 +1,41 @@ +package Sietima::Role::NoSpoof; +use Moo::Role; +use Sietima::Policy; +use Email::Address; +use namespace::clean; + +# VERSION +# ABSTRACT: never sends out messages from subscribers' addresses + +=head1 SYNOPSIS + + my $sietima = Sietima->with_traits('NoSpoof')->new(\%args); + +=head1 DESCRIPTION + +A L<< C<Sietima> >> list with this role applied will replace the +`From` address with its own L<< +C<post_address>|Sietima::Role::WithPostAddress >> (this is a +"sub-role" of L<< C<WithPostAddress>|Sietima::Role::WithPostAddress +>>). + +This will make the list DMARC-compliant. + +=cut + +with 'Sietima::Role::WithPostAddress'; + +around munge_mail => sub ($orig,$self,$incoming_mail) { + my $sender = $self->post_address->address; + my ($from) = Email::Address->parse($incoming_mail->header_str('From')); + + $from->address($sender); + + $incoming_mail->header_str_set( + From => $from, + ); + + return $self->$orig($incoming_mail); +}; + +1; |