История изменений
Исправление basename, (текущая версия) :
/etc/dovecot/dovecot.conf
!include conf.d/*.conf
mail_plugins = $mail_plugins sieve
/etc/dovecot/conf.d/90-sieve.conf
plugin {
sieve = file:/var/vmail/mailboxes/%d/%n;active=~/.dovecot.sieve
sieve_plugins = sieve_imapsieve sieve_extprograms
sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.redirect +vnd.dovecot.editheader +vnd.dovecot.regex
sieve_before = /var/vmail/sieve/global/spam-global.sieve
imapsieve_mailbox1_name = Spam
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_before = file:/var/vmail/sieve/global/learn-spam.sieve
imapsieve_mailbox2_name = *
imapsieve_mailbox2_from = Spam
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_before = file:/var/vmail/sieve/global/learn-ham.sieve
sieve_pipe_bin_dir = /usr/bin
quota = maildir:User quota
quota_exceeded_message = User %u has exhausted allowed storage space.
}
/var/vmail/mailboxes/domain.com/user/.dovecot.sieve
require ["regex", "redirect", "editheader", "envelope", "variables"];
if not header :contains "X-Loop" "redirected" {
if anyof (
header :regex "X-Front-ID" "^[a-f0-9]+@frontapp\.com$",
header :regex "References" "<([a-f0-9]+)@frontapp\.com>",
header :regex "Message-ID" "<([a-f0-9]+)@frontapp\.com>"
) {
addheader "X-Loop" "redirected";
redirect "forwarding-12345@in.frontapp.com";
stop;
}
}
if anyof (
header :regex "References" "<([a-f0-9]+)@frontapp\.com>",
header :regex "In-Reply-To" "<([a-f0-9]+)@frontapp\.com>"
) {
deleteheader "From";
addheader "From" "forwarding-12345@in.frontapp.com";
}
/etc/postfix/main.cf добавить:
# Подмена From для ответов на письма Front.com
smtp_header_checks = pcre:/etc/postfix/header_checks.pcre
/etc/postfix/header_checks.pcre
/^\s*(References|In-Reply-To):.*<([a-f0-9]+)@frontapp\.com>/ PREPEND From: forwarding-12345@in.frontapp.com
Создание глобальных скриптов (если только их нет), просто пустые файлы
sudo mkdir -p /var/vmail/sieve/global
sudo touch /var/vmail/sieve/global/{spam-global.sieve,learn-spam.sieve,learn-ham.sieve}
sudo chown -R vmail:vmail /var/vmail/sieve
sudo chown vmail:vmail /var/vmail/mailboxes/domain.com/user/.dovecot.sieve
sudo chmod 644 /var/vmail/mailboxes/domain.com/user/.dovecot.sieve
sudo -u vmail sievec /var/vmail/mailboxes/domain.com/user/.dovecot.sieve
sudo postmap /etc/postfix/header_checks.pcre
sudo systemctl restart postfix dovecot
Нужно заменить forwarding-12345@in.frontapp.com на реальный адрес.
Исправление basename, :
/etc/dovecot/dovecot.conf
!include conf.d/*.conf
mail_plugins = $mail_plugins sieve
/etc/dovecot/conf.d/90-sieve.conf
plugin {
sieve = file:/var/vmail/mailboxes/%d/%n;active=~/.dovecot.sieve
sieve_plugins = sieve_imapsieve sieve_extprograms
sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.redirect +vnd.dovecot.editheader +vnd.dovecot.regex
sieve_before = /var/vmail/sieve/global/spam-global.sieve
imapsieve_mailbox1_name = Spam
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_before = file:/var/vmail/sieve/global/learn-spam.sieve
imapsieve_mailbox2_name = *
imapsieve_mailbox2_from = Spam
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_before = file:/var/vmail/sieve/global/learn-ham.sieve
sieve_pipe_bin_dir = /usr/bin
quota = maildir:User quota
quota_exceeded_message = User %u has exhausted allowed storage space.
}
/var/vmail/mailboxes/domain.com/user/.dovecot.sieve
require ["regex", "redirect", "editheader", "envelope", "variables"];
if not header :contains "X-Loop" "redirected" {
if anyof (
header :regex "X-Front-ID" "^[a-f0-9]+@frontapp\.com$",
header :regex "References" "<([a-f0-9]+)@frontapp\.com>",
header :regex "Message-ID" "<([a-f0-9]+)@frontapp\.com>"
) {
addheader "X-Loop" "redirected";
redirect "forwarding-12345@in.frontapp.com";
stop;
}
}
if anyof (
header :regex "References" "<([a-f0-9]+)@frontapp\.com>",
header :regex "In-Reply-To" "<([a-f0-9]+)@frontapp\.com>"
) {
deleteheader "From";
addheader "From" "forwarding-12345@in.frontapp.com";
}
/etc/postfix/main.cf добавить:
# Подмена From для ответов на письма Front.com
smtp_header_checks = pcre:/etc/postfix/header_checks.pcre
/etc/postfix/header_checks.pcre
/^\s*(References|In-Reply-To):.*<([a-f0-9]+)@frontapp\.com>/ PREPEND From: forwarding-12345@in.frontapp.com
Создание глобальных скриптов (если только их нет), просто пустые файлы
sudo mkdir -p /var/vmail/sieve/global
sudo touch /var/vmail/sieve/global/{spam-global.sieve,learn-spam.sieve,learn-ham.sieve}
sudo chown -R vmail:vmail /var/vmail/sieve
sudo chown vmail:vmail /var/vmail/mailboxes/domain.com/user/.dovecot.sieve
sudo chmod 644 /var/vmail/mailboxes/domain.com/user/.dovecot.sieve
sudo -u vmail sievec /var/vmail/mailboxes/domain.com/user/.dovecot.sieve
sudo postmap /etc/postfix/header_checks.pcre
sudo systemctl restart postfix dovecot
Исправление basename, :
/etc/dovecot/dovecot.conf
!include conf.d/*.conf
mail_plugins = $mail_plugins sieve
/etc/dovecot/conf.d/90-sieve.conf
plugin {
sieve = file:/var/vmail/mailboxes/%d/%n;active=~/.dovecot.sieve
sieve_plugins = sieve_imapsieve sieve_extprograms
sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.redirect +vnd.dovecot.editheader +vnd.dovecot.regex
sieve_before = /var/vmail/sieve/global/spam-global.sieve
imapsieve_mailbox1_name = Spam
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_before = file:/var/vmail/sieve/global/learn-spam.sieve
imapsieve_mailbox2_name = *
imapsieve_mailbox2_from = Spam
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_before = file:/var/vmail/sieve/global/learn-ham.sieve
sieve_pipe_bin_dir = /usr/bin
quota = maildir:User quota
quota_exceeded_message = User %u has exhausted allowed storage space.
}
/var/vmail/mailboxes/domain.com/user/.dovecot.sieve
require [
"regex",
"redirect",
"editheader",
"envelope",
"variables"
];
# Обработка ВХОДЯЩИХ писем от Front.com
if not header :contains "X-Loop" "redirected" {
if anyof (
# Письмо содержит оригинальный X-Front-ID
header :regex "X-Front-ID" "^[a-f0-9]+@frontapp\.com$",
# Или ссылается на письмо Front.com через References/Message-ID
header :regex "References" "<([a-f0-9]+)@frontapp\.com>",
header :regex "Message-ID" "<([a-f0-9]+)@frontapp\.com>"
) {
# Добавить заголовок для предотвращения циклов
addheader "X-Loop" "redirected";
# Перенаправить на адрес Front.com
redirect "j39lj-f37d67c8458541339867@in.frontapp.com";
stop;
}
}
# Обработка ИСХОДЯЩИХ ответов пользователя
if anyof (
# Ответ на письмо Front.com (References/In-Reply-To содержат ID)
header :regex "References" "<([a-f0-9]+)@frontapp\.com>",
header :regex "In-Reply-To" "<([a-f0-9]+)@frontapp\.com>"
) {
# Заменить From на адрес Front.com
deleteheader "From";
addheader "From" "цифро_буквы@in.front.com";
}
/etc/postfix/main.cf добавить:
# Подмена From для ответов на письма Front.com
smtp_header_checks = pcre:/etc/postfix/header_checks.pcre
/etc/postfix/header_checks.pcre
/^\s*(References|In-Reply-To):.*<([a-f0-9]+)@frontapp\.com>/ PREPEND From: цифро_буквы@in.front.com
Создание глобальных скриптов (если только их нет), просто пустые файлы
sudo mkdir -p /var/vmail/sieve/global
sudo touch /var/vmail/sieve/global/{spam-global.sieve,learn-spam.sieve,learn-ham.sieve}
sudo chown -R vmail:vmail /var/vmail/sieve
sudo chown vmail:vmail /var/vmail/mailboxes/domain.com/user/.dovecot.sieve
sudo chmod 644 /var/vmail/mailboxes/domain.com/user/.dovecot.sieve
sudo -u vmail sievec /var/vmail/mailboxes/domain.com/user/.dovecot.sieve
sudo postmap /etc/postfix/header_checks.pcre
sudo systemctl restart postfix dovecot
Исходная версия basename, :
/etc/dovecot/conf.d/90-sieve.conf
plugin {
sieve = file:/var/vmail/mailboxes/%d/%n;active=~/.dovecot.sieve
sieve_plugins = sieve_imapsieve sieve_extprograms
sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.redirect +vnd.dovecot.editheader +vnd.dovecot.regex
sieve_before = /var/vmail/sieve/global/spam-global.sieve
imapsieve_mailbox1_name = Spam
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_before = file:/var/vmail/sieve/global/learn-spam.sieve
imapsieve_mailbox2_name = *
imapsieve_mailbox2_from = Spam
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_before = file:/var/vmail/sieve/global/learn-ham.sieve
sieve_pipe_bin_dir = /usr/bin
quota = maildir:User quota
quota_exceeded_message = User %u has exhausted allowed storage space.
}
/var/vmail/mailboxes/domain.com/user/.dovecot.sieve
require [
"regex",
"redirect",
"editheader",
"envelope",
"variables"
];
# Обработка ВХОДЯЩИХ писем от Front.com
if not header :contains "X-Loop" "redirected" {
if anyof (
# Письмо содержит оригинальный X-Front-ID
header :regex "X-Front-ID" "^[a-f0-9]+@frontapp\.com$",
# Или ссылается на письмо Front.com через References/Message-ID
header :regex "References" "<([a-f0-9]+)@frontapp\.com>",
header :regex "Message-ID" "<([a-f0-9]+)@frontapp\.com>"
) {
# Добавить заголовок для предотвращения циклов
addheader "X-Loop" "redirected";
# Перенаправить на адрес Front.com
redirect "j39lj-f37d67c8458541339867@in.frontapp.com";
stop;
}
}
# Обработка ИСХОДЯЩИХ ответов пользователя
if anyof (
# Ответ на письмо Front.com (References/In-Reply-To содержат ID)
header :regex "References" "<([a-f0-9]+)@frontapp\.com>",
header :regex "In-Reply-To" "<([a-f0-9]+)@frontapp\.com>"
) {
# Заменить From на адрес Front.com
deleteheader "From";
addheader "From" "цифро_буквы@in.front.com";
}
/etc/postfix/main.cf добавить:
# Подмена From для ответов на письма Front.com
smtp_header_checks = pcre:/etc/postfix/header_checks.pcre
/etc/postfix/header_checks.pcre
/^\s*(References|In-Reply-To):.*<([a-f0-9]+)@frontapp\.com>/ PREPEND From: цифро_буквы@in.front.com
Создание глобальных скриптов (если только их нет), просто пустые файлы
sudo mkdir -p /var/vmail/sieve/global
sudo touch /var/vmail/sieve/global/{spam-global.sieve,learn-spam.sieve,learn-ham.sieve}
sudo chown -R vmail:vmail /var/vmail/sieve
sudo chown vmail:vmail /var/vmail/mailboxes/domain.com/user/.dovecot.sieve
sudo chmod 644 /var/vmail/mailboxes/domain.com/user/.dovecot.sieve
sudo -u vmail sievec /var/vmail/mailboxes/domain.com/user/.dovecot.sieve
sudo postmap /etc/postfix/header_checks.pcre
sudo systemctl restart postfix dovecot
Если не заработает, то сдаюсь. :(