In case anyone else wants to accomplish the same, here's my solution. It
involves editing /usr/sbin/amavisd, or your equivalent, modifying the
$uname assignment to pass $msginfo->sender to lookup2 and then duplicating
the original line as the next and adding an extra conditional.
$ sed -n '27524,27529 p' /usr/sbin/amavisd
my($uconf,$uname);
my $recip_addr = $r->recip_addr;
$uconf = lookup2(0, $recip_addr, $uconf_maps_ref) if @$uconf_maps_ref;
$uname = lookup2(0, $msginfo->sender, $uname_maps_ref) if
@$uname_maps_ref;
$uname = lookup2(0, $recip_addr, $uname_maps_ref) if
@$uname_maps_ref && (!defined $uname || $uname eq '');
$uconf = '' if !defined $uconf;
Line numbers may be off in your version, but $uname = lookup2 should be
unique and therefore easy to locate.
On 18 May 2014 7:42:41 pm William Wilhelm via amavis-users
<[email protected]> wrote:
Hi,
I've got per-recipient config working well but since amavis is also
scanning outgoing mail, I think it would make sense to have "per-sender"
config as well, in the case where the sender is local.
Is there some way to configure this? Really I think I only need the ability
to refer to the sender in the $sql_select_policy query. Similarly to the %k
placeholder which contains all things recipient. A skim of the code gave a
glimmer of hope for %s, but that's not it.
Thanks,
Will