X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=examples%2Funsubscribe.milter;h=216b0dddd0cf737e77dfb3780f48b48c5fc9d1cd;hb=3e639ca78aa70ad6a6598bcf32d4b72696e3ebfb;hp=608524cbaca40337a8ca45a1f0b7d0ba38cfd774;hpb=e901a56b3b30b22f16bc9c6460150b2b402b4ee7;p=public-inbox.git diff --git a/examples/unsubscribe.milter b/examples/unsubscribe.milter index 608524cb..216b0ddd 100644 --- a/examples/unsubscribe.milter +++ b/examples/unsubscribe.milter @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# Copyright (C) 2016-2021 all contributors +# Copyright (C) all contributors # License: AGPL-3.0+ use strict; use Sendmail::PMilter qw(:all); @@ -96,6 +96,7 @@ $cbs{eom} = sub { my $unsub = $priv->{header}->{'list-unsubscribe'} || []; my $n = 0; + my $added; foreach my $u (@$unsub) { # Milter indices are 1-based, # not 0-based like Perl arrays @@ -114,7 +115,11 @@ $cbs{eom} = sub { $v .= ",\n "; $ctx->chgheader($k, $index, $v); + $added = 1; } + # RFC 8058 + $added and $ctx->addheader('List-Unsubscribe-Post', + 'List-Unsubscribe=One-Click'); }; warn $@ if $@; SMFIS_CONTINUE; @@ -127,7 +132,7 @@ my $fds = $ENV{LISTEN_FDS}; if ($fds && (($ENV{LISTEN_PID} || 0) == $$)) { die "$0 can only listen on one FD\n" if $fds != 1; my $start_fd = 3; - open(my $s, '<&=', $start_fd) or + my $s = IO::Socket->new_from_fd($start_fd, 'r') or die "inherited bad FD from LISTEN_FDS: $!\n"; $milter->set_socket($s); } else {