В базовом функционале roundcube уже есть плагин sieve. И тут остаётся дело за малым: прикрутить это всё к dovecot+exim (via dovecot delivery). И так, ниже настройки dovecot.conf:
protocols = imap pop3 sieve protocol lda { mail_plugins = $mail_plugins sieve ... } service managesieve-login { inet_listener sieve { address = 127.0.0.1 } inet_listener sieve_deprecated { address = 127.0.0.1 port = 2000 } } protocol sieve { log_path = /var/log/dovecot-sieve-errors.log info_log_path = /var/log/dovecot-sieve.log } plugin { sieve=/home/mail/%d/%n/dovecot.sieve sieve_dir=/home/mail/%d/%n/sieve sieve_max_script_size = 1M sieve_quota_max_scripts = 50 sieve_quota_max_storage = 1M sieve_global_dir = /etc/dovecot/sieve sieve_vacation_send_from_recipient = yes sieve_vacation_min_period = 1d ... }
Самая главная опция здесь, это sieve_vacation_send_from_recipient (по умолчанию стоит в no). Она отвечает как будет формироваться ответ
– no: ответ формируется как bounce сообщение с From=<>, которое отбрасывается многими публичными почтовыми серверами. В логах exim’a это выглядит так:
2020-09-21 19:28:44.727 [28760] cwd=/home/mail/domain.net/user2 6 args: /usr/sbin/sendmail -i -f <> -- user@domain.com
– yes: ответ формируется как новое сообщение, то есть как-будто вы сами отправили ответ и отправитель подставляется как user2@domain.net. В логах это выглядит так:
2020-09-21 20:15:43.871 [30679] cwd=/home/mail/domain.net/user2 6 args: /usr/sbin/sendmail -i -f user2@domain.net -- user@domain.com
Дополнительно можно попробовать использовать опцию sieve_vacation_use_original_recipient, но там могут быть нюансы. Приведу выдержку из документации dovecot
This specifies whether the original envelope recipient should be used in the check for implicit delivery. The vacation command checks headers of the incoming message, such as To: and Cc: for the address of the recipient, to verify that the message is explicitly addressed at the recipient. If the recipient address is not found, the vacation action will not trigger a response to prevent sending a reply when it is not appropriate. Normally only the final recipient address is used in this check. This setting allows including the original recipient specified in the SMTP session if available. This is useful to handle mail accounts with aliases. Use this option with caution: if you are using aliases that point to more than a single account, senders can get multiple vacation responses for a single message. Use the LDA -a option or the LMTP/LDA lda_original_recipient_header setting to make the original SMTP recipient available to Sieve.