Add a BCC to service account mails to enable threading #123
1 changed files with 60 additions and 12 deletions
|
@ -92,7 +92,7 @@ with lib; let
|
|||
}
|
||||
];
|
||||
|
||||
configFile =
|
||||
sieveConfigFile =
|
||||
# https://doc.dovecot.org/configuration_manual/sieve/examples/#plus-addressed-mail-filtering
|
||||
pkgs.writeText "basic_sieve"
|
||||
''
|
||||
|
@ -105,17 +105,32 @@ with lib; let
|
|||
|
||||
# this should be close to teh last step
|
||||
if allof (
|
||||
address :localpart ["To"] ["${toString create_config_to}"],
|
||||
address :domain ["To"] "skynet.ie"
|
||||
){
|
||||
if address :matches ["To"] "*@skynet.ie" {
|
||||
if header :is "X-Spam" "Yes" {
|
||||
fileinto :create "''${1}.Junk";
|
||||
stop;
|
||||
} else {
|
||||
fileinto :create "''${1}";
|
||||
}
|
||||
address :localpart ["To", "Cc"] ["${toString create_config_to}"],
|
||||
address :domain ["To", "Cc"] "skynet.ie"
|
||||
){
|
||||
if address :matches ["To", "Cc"] "*@skynet.ie" {
|
||||
if header :is "X-Spam" "Yes" {
|
||||
fileinto :create "''${1}.Junk";
|
||||
stop;
|
||||
} else {
|
||||
fileinto :create "''${1}";
|
||||
stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
if allof (
|
||||
address :localpart ["From"] ["${toString create_config_to}"],
|
||||
address :domain ["From"] "skynet.ie"
|
||||
){
|
||||
if address :matches ["From"] "*@skynet.ie" {
|
||||
if header :is "X-Spam" "Yes" {
|
||||
fileinto :create "''${1}.Junk";
|
||||
stop;
|
||||
} else {
|
||||
fileinto :create "''${1}";
|
||||
stop;
|
||||
}
|
||||
}
|
||||
}
|
||||
'';
|
||||
in {
|
||||
|
@ -462,7 +477,40 @@ in {
|
|||
};
|
||||
|
||||
services.dovecot2.sieve.scripts = {
|
||||
before = configFile;
|
||||
before = sieveConfigFile;
|
||||
};
|
||||
|
||||
# This is to add a bcc to outgoing mail
|
||||
# this then interacts with teh filters to put it in the right folder
|
||||
# we can directly add to the postfix service here
|
||||
services.postfix = let
|
||||
# mostly copied from the upstream mailserver config/functions
|
||||
mappedFile = name: "hash:/var/lib/postfix/conf/${name}";
|
||||
|
||||
sender_bcc_maps_file = let
|
||||
content = lookupTableToString create_skynet_service_bcc;
|
||||
in
|
||||
builtins.toFile "sender_bcc_maps" content;
|
||||
|
||||
lookupTableToString = attrs: let
|
||||
valueToString = value: lib.concatStringsSep ", " value;
|
||||
in
|
||||
lib.concatStringsSep "\n" (lib.mapAttrsToList (name: value: "${name} ${valueToString value}") attrs);
|
||||
|
||||
# convert the mailboxes config to something that can be used here
|
||||
create_skynet_email_bcc = mailbox: {
|
||||
name = "${mailbox}@skynet.ie";
|
||||
value = ["${mailbox}@skynet.ie"];
|
||||
};
|
||||
create_skynet_service_bcc = builtins.listToAttrs (map (mailbox: (create_skynet_email_bcc mailbox.account)) service_mailboxes);
|
||||
in {
|
||||
mapFiles."sender_bcc_maps" = sender_bcc_maps_file;
|
||||
|
||||
config = {
|
||||
sender_bcc_maps = [
|
||||
(mappedFile "sender_bcc_maps")
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# tune the spam filter
|
||||
|
|
Loading…
Reference in a new issue