LINUX.ORG.RU

История изменений

Исправление 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

Если не заработает, то сдаюсь. :(