Skip to Content.
Sympa Menu

devel - Re: [sympa-dev] More -owner Versus -request Fun

Subject: Developers of Sympa

List archive

Chronological Thread  
  • From: Olivier Salaün - CRU <address@concealed>
  • To: Jeff Abbott <address@concealed>
  • Cc: address@concealed
  • Subject: Re: [sympa-dev] More -owner Versus -request Fun
  • Date: Fri, 28 Oct 2005 11:09:09 +0200

Hi Jeff,

It sounds like you don't have a proper solution for your migration problem and you're not the first who is facing it. Therefore we've added a new sympa.conf 'return_path_suffix' parameter in Sympa development branch. Attached is a patch that you can probably apply on a 5.1 release. This should allow you to use a diff'erent suffix for return path and use the -owner suffix to contact list owners.

I hope this meets your needs...

Jeff Abbott wrote:

So one of the other guys here, who used to run a departmental Mailman instance, had an interesting thought on my problem of users sending messages, due to historical use of such addresses here at Duke, to $LISTNAME-owner rather than Sympa's preferred $LISTNAME-request when trying to contact the list owner. The specific issue I've been taking claim with is that bouncequeue is dropping non-DSN messages, so a user would send a message to the list owner at $LISTNAME-owner and neither end would know the message was sent but not received and seen.

His suggestion was to have $LISTNAME-owner send to both bouncequeue and redirect to $LISTNAME-request. For instance, for a list named testlist1:
[...]


? .dump subscriber_table
? Makefile
? autom4te.cache
? config.log
? config.status
? rss.php
? doc/sympa.aux
? doc/sympa.cb
? doc/sympa.dvi
? doc/sympa.idx
? doc/sympa.ilg
? doc/sympa.ind
? doc/sympa.log
? doc/sympa.out
? doc/sympa.toc
? doc/html/img10.png
? doc/html/img11.png
? doc/html/img12.png
? doc/html/img3.png
? doc/html/img4.png
? doc/html/img5.png
? doc/html/img6.png
? doc/html/img7.png
? doc/html/img8.png
? doc/html/img9.png
? doc/html/node28.html
? doc/html/node29.html
? doc/html/node30.html
? doc/html/node31.html
? po/cs.mo
? po/de.mo
? po/el.mo
? po/en_US.mo
? po/es.mo
? po/et.mo
? po/fi.mo
? po/fr.mo
? po/hu.mo
? po/it.mo
? po/ja.mo
? po/nl.mo
? po/oc.mo
? po/pl.mo
? po/pt.mo
? po/pt_BR.mo
? po/ro.mo
? po/sv.mo
? po/tr.mo
? po/zh_CN.mo
? po/zh_TW.mo
? src/aliaswrapper
? src/bouncequeue
? src/queue
? src/virtualwrapper
? wwsympa/archived.1.pl
Index: doc/sympa.tex.tpl
===================================================================
RCS file: /sympa/sympa/doc/sympa.tex.tpl,v
retrieving revision 1.235
diff -c -r1.235 sympa.tex.tpl
*** doc/sympa.tex.tpl 24 Oct 2005 10:11:51 -0000 1.235
--- doc/sympa.tex.tpl 28 Oct 2005 09:00:53 -0000
***************
*** 1626,1632 ****
is not compulsory.

The address \mailaddr {\samplelist-owner} is the address receiving
! non-delivery reports. The \file {bouncequeue} program stores these messages
in the \dir {queuebounce} directory. \WWSympa ((see~\ref {wwsympa},
page~\pageref {wwsympa})
may then analyze them and provide a web access to them.

--- 1626,1634 ----
is not compulsory.

The address \mailaddr {\samplelist-owner} is the address receiving
! non-delivery reports (note that the -owner suffix can be customized,
! see~\ref {kw-return-path-suffix}, page~\pageref {kw-return-path-suffix}).
! The \file {bouncequeue} program stores these messages
in the \dir {queuebounce} directory. \WWSympa ((see~\ref {wwsympa},
page~\pageref {wwsympa})
may then analyze them and provide a web access to them.

***************
*** 2201,2207 ****
\default {\dir {[SPOOLDIR]/bounce}}

Spool to store bounces (non-delivery reports) received by the \file
{bouncequeue}
! program via the \samplelist-owner or bounce+* addresses . This
parameter is mandatory
and must be an absolute path.

\subsection {\cfkeyword {queuetask}}
--- 2203,2209 ----
\default {\dir {[SPOOLDIR]/bounce}}

Spool to store bounces (non-delivery reports) received by the \file
{bouncequeue}
! program via the \samplelist-owner (unless this suffix was customized)
or bounce+* addresses . This parameter is mandatory
and must be an absolute path.

\subsection {\cfkeyword {queuetask}}
***************
*** 2352,2357 ****
--- 2354,2368 ----
Like \cfkeyword {welcome\_return\_path}, but relates to the remind
message.
Also requires the bounce+* alias to be installed.

+ \subsection {\cfkeyword {return\_path\_suffix}}
+ \label {kw-return-path-suffix}
+
+ \default {-owner}
+
+ This defines the suffix that is appended to the list name to build
the return-path
+ of messages sent to the lists. This is the address that will receive
all non delivery
+ reports (also called bounces).
+
\subsection {\cfkeyword {expire\_bounce\_task}}
\label {kw-expire-bounce-task}

***************
*** 8879,8885 ****
automatic processing of bounces, list owners either go
mad, or just delete them without further attention.

! Bounces are received at \samplelist-owner address, which should
be sent to the \file {bouncequeue} program via aliases :

\begin {quote}
--- 8890,8898 ----
automatic processing of bounces, list owners either go
mad, or just delete them without further attention.

! Bounces are received at \samplelist-owner address (note that the -owner
! suffix can be customized, see~\ref {kw-return-path-suffix},
! page~\pageref {kw-return-path-suffix}), which should
be sent to the \file {bouncequeue} program via aliases :

\begin {quote}
Index: src/Conf.pm
===================================================================
RCS file: /sympa/sympa/src/Conf.pm,v
retrieving revision 1.122
diff -c -r1.122 Conf.pm
*** src/Conf.pm 20 Oct 2005 09:49:29 -0000 1.122
--- src/Conf.pm 28 Oct 2005 09:00:53 -0000
***************
*** 49,55 ****
purge_user_table_task purge_orphan_bounces_task
eval_bouncers_task process_bouncers_task
minimum_bouncing_count minimum_bouncing_period
bounce_delay
default_bounce_level1_rate default_bounce_level2_rate
! remind_return_path request_priority
rfc2369_header_fields sendmail sendmail_args sleep
sort sympa_priority supported_lang syslog log_smtp
umask welcome_return_path wwsympa_url
openssl capath cafile key_passwd ssl_cert_dir
remove_headers
antivirus_path antivirus_args antivirus_notify
anonymous_header_fields sendmail_aliases
--- 49,55 ----
purge_user_table_task purge_orphan_bounces_task
eval_bouncers_task process_bouncers_task
minimum_bouncing_count minimum_bouncing_period
bounce_delay
default_bounce_level1_rate default_bounce_level2_rate
! remind_return_path request_priority return_path_suffix
rfc2369_header_fields sendmail sendmail_args sleep
sort sympa_priority supported_lang syslog log_smtp
umask welcome_return_path wwsympa_url
openssl capath cafile key_passwd ssl_cert_dir
remove_headers
antivirus_path antivirus_args antivirus_notify
anonymous_header_fields sendmail_aliases
***************
*** 210,215 ****
--- 210,216 ----
'default_remind_task' => '',
'update_db_field_types' => 'auto',
'logo_html_definition' => '',
+ 'return_path_suffix' => '-owner',
);

my $wwsconf;
Index: src/List.pm
===================================================================
RCS file: /sympa/sympa/src/List.pm,v
retrieving revision 1.588
diff -c -r1.588 List.pm
*** src/List.pm 26 Oct 2005 08:48:40 -0000 1.588
--- src/List.pm 28 Oct 2005 09:00:53 -0000
***************
*** 2411,2417 ****
## Add useful headers
$hdr->add('X-Loop', "$name\@$host");
$hdr->add('X-Sequence', $sequence);
! $hdr->add('Errors-to', "$name-owner\@$host");
$hdr->add('Precedence', 'list');
$hdr->add('X-no-archive', 'yes');
foreach my $i (@{$self->{'admin'}{'custom_header'}}) {
--- 2411,2417 ----
## Add useful headers
$hdr->add('X-Loop', "$name\@$host");
$hdr->add('X-Sequence', $sequence);
! $hdr->add('Errors-to', $name.&Conf::get_robot_conf($robot,
'return_path_suffix').'@'.$host);
$hdr->add('Precedence', 'list');
$hdr->add('X-no-archive', 'yes');
foreach my $i (@{$self->{'admin'}{'custom_header'}}) {
***************
*** 2511,2517 ****

## Who is the enveloppe sender ?
my $host = $self->{'admin'}{'host'};
! my $from = "$name-owner\@$host";

my (@tabrcpt, @tabrcpt_notice, @tabrcpt_txt, @tabrcpt_html,
@tabrcpt_url);
my $mixed = ($message->{'msg'}->head->get('Content-Type') =~
/multipart\/mixed/i);
--- 2511,2517 ----

## Who is the enveloppe sender ?
my $host = $self->{'admin'}{'host'};
! my $from = $name.&Conf::get_robot_conf($robot,
'return_path_suffix').'@'.$host;

my (@tabrcpt, @tabrcpt_notice, @tabrcpt_txt, @tabrcpt_html,
@tabrcpt_url);
my $mixed = ($message->{'msg'}->head->get('Content-Type') =~
/multipart\/mixed/i);
***************
*** 3033,3039 ****
}
}

! $data->{'return_path'} ||= "$name-owner\@$self->{'admin'}{'host'}";

## Lang
$data->{'lang'} = $data->{'user'}{'lang'} || $self->{'admin'}{'lang'}
|| &Conf::get_robot_conf($robot, 'lang');
--- 3033,3039 ----
}
}

! $data->{'return_path'} ||= $name.&Conf::get_robot_conf($robot,
'return_path_suffix').'@'.$self->{'admin'}{'host'};

## Lang
$data->{'lang'} = $data->{'user'}{'lang'} || $self->{'admin'}{'lang'}
|| &Conf::get_robot_conf($robot, 'lang');
Index: src/admin.pm
===================================================================
RCS file: /sympa/sympa/src/admin.pm,v
retrieving revision 1.10
diff -c -r1.10 admin.pm
*** src/admin.pm 18 Aug 2005 15:01:29 -0000 1.10
--- src/admin.pm 28 Oct 2005 09:00:53 -0000
***************
*** 654,660 ****
$data{'list'}{'name'} = $list->{'name'};
$data{'default_domain'} = $Conf{'domain'};
$data{'is_default_domain'} = 1 if ($robot == $Conf{'domain'});
!
my $tt2_include_path = &tools::make_tt2_include_path($robot,'','','');

&tt2::parse_tt2 (\%data,'list_aliases.tt2',\$aliases,
$tt2_include_path);
--- 654,661 ----
$data{'list'}{'name'} = $list->{'name'};
$data{'default_domain'} = $Conf{'domain'};
$data{'is_default_domain'} = 1 if ($robot == $Conf{'domain'});
! $data{'return_path_suffix'} = &Conf::get_robot_conf($robot,
'return_path_suffix');
!
my $tt2_include_path = &tools::make_tt2_include_path($robot,'','','');

&tt2::parse_tt2 (\%data,'list_aliases.tt2',\$aliases,
$tt2_include_path);
***************
*** 683,688 ****
--- 684,690 ----
&do_log('info', "_remove_aliases($list->{'name'},$robot");

my $status = $list->remove_aliases();
+ my $suffix = &Conf::get_robot_conf($robot, 'return_path_suffix');
my $aliases;

unless ($status == 1) {
***************
*** 692,698 ****
$aliases = "#----------------- $list->{'name'}\n";
$aliases .= "$list->{'name'}: \"| --MAILERPROGDIR--/queue
$list->{'name'}\"\n";
$aliases .= "$list->{'name'}-request: \"| --MAILERPROGDIR--/queue
$list->{'name'}-request\"\n";
! $aliases .= "$list->{'name'}-owner: \"|
--MAILERPROGDIR--/bouncequeue $list->{'name'}\"\n";
$aliases .= "$list->{'name'}-unsubscribe: \"|
--MAILERPROGDIR--/queue $list->{'name'}-unsubscribe\"\n";
$aliases .= "# $list->{'name'}-subscribe: \"|
--MAILERPROGDIR--/queue $list->{'name'}-subscribe\"\n";

--- 694,700 ----
$aliases = "#----------------- $list->{'name'}\n";
$aliases .= "$list->{'name'}: \"| --MAILERPROGDIR--/queue
$list->{'name'}\"\n";
$aliases .= "$list->{'name'}-request: \"| --MAILERPROGDIR--/queue
$list->{'name'}-request\"\n";
! $aliases .= "$list->{'name'}$suffix: \"|
--MAILERPROGDIR--/bouncequeue $list->{'name'}\"\n";
$aliases .= "$list->{'name'}-unsubscribe: \"|
--MAILERPROGDIR--/queue $list->{'name'}-unsubscribe\"\n";
$aliases .= "# $list->{'name'}-subscribe: \"|
--MAILERPROGDIR--/queue $list->{'name'}-subscribe\"\n";

Index: src/alias_manager.pl
===================================================================
RCS file: /sympa/sympa/src/alias_manager.pl,v
retrieving revision 1.32
diff -c -r1.32 alias_manager.pl
*** src/alias_manager.pl 9 Aug 2005 09:52:42 -0000 1.32
--- src/alias_manager.pl 28 Oct 2005 09:00:53 -0000
***************
*** 77,82 ****
--- 77,85 ----
$data{'list'}{'name'} = $listname;
$data{'default_domain'} = $default_domain;
$data{'is_default_domain'} = 1 if ($domain eq $default_domain);
+ $data{'return_path_suffix'} = &Conf::get_robot_conf($domain,
'return_path_suffix');
+
+
my @aliases ;

my $tt2_include_path = &tools::make_tt2_include_path($domain,'',,);
Index: src/etc/list_aliases.tt2
===================================================================
RCS file: /sympa/sympa/src/etc/list_aliases.tt2,v
retrieving revision 1.4
diff -c -r1.4 list_aliases.tt2
*** src/etc/list_aliases.tt2 25 Oct 2004 10:21:42 -0000 1.4
--- src/etc/list_aliases.tt2 28 Oct 2005 09:00:53 -0000
***************
*** 5,16 ****
[% list.name %]-editor: "| --MAILERPROGDIR--/queue [% list.name
%]-editor@[% list.domain %]"
#[% list.name %]-subscribe: "| --MAILERPROGDIR--/queue [% list.name
%]-subscribe@[% list.domain %]"
[% list.name %]-unsubscribe: "| --MAILERPROGDIR--/queue [% list.name
%]-unsubscribe@[% list.domain %]"
! [% list.name %]-owner: "| --MAILERPROGDIR--/bouncequeue [% list.name %]@[%
list.domain %]"
[% ELSE -%]
[% list.domain %]-[% list.name %]: "| --MAILERPROGDIR--/queue [% list.name
%]@[% list.domain %]"
[% list.domain %]-[% list.name %]-request: "| --MAILERPROGDIR--/queue [%
list.name %]-request@[% list.domain %]"
[% list.domain %]-[% list.name %]-editor: "| --MAILERPROGDIR--/queue [%
list.name %]-editor@[% list.domain %]"
#[% list.domain %]-[% list.name %]-subscribe: "| --MAILERPROGDIR--/queue [%
list.name %]-subscribe@[% list.domain %]"
[% list.domain %]-[% list.name %]-unsubscribe: "| --MAILERPROGDIR--/queue
[% list.name %]-unsubscribe@[% list.domain %]"
! [% list.domain %]-[% list.name %]-owner: "| --MAILERPROGDIR--/bouncequeue
[% list.name %]@[% list.domain %]"
! [% END -%]
\ No newline at end of file
--- 5,16 ----
[% list.name %]-editor: "| --MAILERPROGDIR--/queue [% list.name
%]-editor@[% list.domain %]"
#[% list.name %]-subscribe: "| --MAILERPROGDIR--/queue [% list.name
%]-subscribe@[% list.domain %]"
[% list.name %]-unsubscribe: "| --MAILERPROGDIR--/queue [% list.name
%]-unsubscribe@[% list.domain %]"
! [% list.name %][% return_path_suffix %]: "| --MAILERPROGDIR--/bouncequeue
[% list.name %]@[% list.domain %]"
[% ELSE -%]
[% list.domain %]-[% list.name %]: "| --MAILERPROGDIR--/queue [% list.name
%]@[% list.domain %]"
[% list.domain %]-[% list.name %]-request: "| --MAILERPROGDIR--/queue [%
list.name %]-request@[% list.domain %]"
[% list.domain %]-[% list.name %]-editor: "| --MAILERPROGDIR--/queue [%
list.name %]-editor@[% list.domain %]"
#[% list.domain %]-[% list.name %]-subscribe: "| --MAILERPROGDIR--/queue [%
list.name %]-subscribe@[% list.domain %]"
[% list.domain %]-[% list.name %]-unsubscribe: "| --MAILERPROGDIR--/queue
[% list.name %]-unsubscribe@[% list.domain %]"
! [% list.domain %]-[% list.name %][% return_path_suffix %]: "|
--MAILERPROGDIR--/bouncequeue [% list.name %]@[% list.domain %]"
! [% END -%]
Index: wwsympa/wwsympa.fcgi
===================================================================
RCS file: /sympa/sympa/wwsympa/wwsympa.fcgi,v
retrieving revision 1.587
diff -c -r1.587 wwsympa.fcgi
*** wwsympa/wwsympa.fcgi 27 Oct 2005 15:56:00 -0000 1.587
--- wwsympa/wwsympa.fcgi 28 Oct 2005 09:00:53 -0000
***************
*** 6514,6519 ****
--- 6514,6520 ----
$data{'list'}{'name'} = $list->{'name'};
$data{'default_domain'} = $Conf{'domain'};
$data{'is_default_domain'} = 1 if ($robot == $Conf{'domain'});
+ $data{'return_path_suffix'} = &Conf::get_robot_conf($robot,
'return_path_suffix');

my $tt2_include_path =
&tools::make_tt2_include_path($robot,'','','');
&tt2::parse_tt2 (\%data,'list_aliases.tt2',\$aliases,
$tt2_include_path);
***************
*** 6529,6534 ****
--- 6530,6536 ----
&wwslog('info', "_remove_aliases($list->{'name'},$list->{'domain'})");

my $status = $list->remove_aliases();
+ my $suffix = &Conf::get_robot_conf($robot, 'return_path_suffix');

unless ($status == 1) {
&wwslog('info','Failed to remove aliases for list %s',
$list->{'name'});
***************
*** 6538,6544 ****
$param->{'aliases'} = "#----------------- $in{'list'}\n";
$param->{'aliases'} .= "$in{'list'}: \"| --MAILERPROGDIR--/queue
$in{'list'}\"\n";
$param->{'aliases'} .= "$in{'list'}-request: \"|
--MAILERPROGDIR--/queue $in{'list'}-request\"\n";
! $param->{'aliases'} .= "$in{'list'}-owner: \"|
--MAILERPROGDIR--/bouncequeue $in{'list'}\"\n";
$param->{'aliases'} .= "$in{'list'}-unsubscribe: \"|
--MAILERPROGDIR--/queue $in{'list'}-unsubscribe\"\n";
$param->{'aliases'} .= "# $in{'list'}-subscribe: \"|
--MAILERPROGDIR--/queue $in{'list'}-subscribe\"\n";

--- 6540,6546 ----
$param->{'aliases'} = "#----------------- $in{'list'}\n";
$param->{'aliases'} .= "$in{'list'}: \"| --MAILERPROGDIR--/queue
$in{'list'}\"\n";
$param->{'aliases'} .= "$in{'list'}-request: \"|
--MAILERPROGDIR--/queue $in{'list'}-request\"\n";
! $param->{'aliases'} .= "$in{'list'}$suffix: \"|
--MAILERPROGDIR--/bouncequeue $in{'list'}\"\n";
$param->{'aliases'} .= "$in{'list'}-unsubscribe: \"|
--MAILERPROGDIR--/queue $in{'list'}-unsubscribe\"\n";
$param->{'aliases'} .= "# $in{'list'}-subscribe: \"|
--MAILERPROGDIR--/queue $in{'list'}-subscribe\"\n";

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature




Archive powered by MHonArc 2.6.19+.

Top of Page