I've got dovecot vacataion auto-responses working via sieve, but when
the responses are sent, they are sent as if they are to be locally
delivered, which causes them to bounce for domains that I am not local
for. How can I get dovecot's sieve vacation response to check the domain
is local or not?
Here is an example of what happens:
The LDA notices it needs to send a vacation response:
2019-05-14T10:50:47.827466-07:00 brant dovecot:
lda(u...@example.org)<14817>: sieve:
msgid=<20190514135045.012486@localhost>: sent vacation response to
but that response was sent via the postfix pipe through the dovecot lda
transport... because that is local, and the domain it is sending to is
not local, it bounces:
2019-05-14T10:50:47.92-07:00 brant postfix/pipe[14821]: C998381539:
to=, relay=dovecot, delay=0.11, delays=0.04/0.01/0/0.06,
dsn=5.1.1, status=bounced (user unknown)
Postfix is set to do this:
dovecot unix- n n - - pipe
flags=DRhu user=mail argv=/usr/bin/spamc --connect-retries=1 -H -d 10.0.1.92
-s 1024 -t 100 -u ${recipient} -e /usr/lib/dovecot/dovecot-lda -f ${sender}
-d ${recipient}
require ["fileinto", "vacation"];
vacation
:days 2
:subject "Helllo"
"Hi";
Here is my doveconf -n:
# 2.3.4.1 (f79e8e7e4): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.4 ()
# OS: Linux 4.9.0-8-amd64 x86_64 Debian 9.8
auth_worker_max_count = 120
default_client_limit = 6144
default_process_limit = 256
default_vsz_limit = 512 M
dict {
expire = mysql:/etc/dovecot/dovecot-dict-sql.conf
quota = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
disable_plaintext_auth = no
first_valid_gid = 8
first_valid_uid = 8
last_valid_gid = 8
last_valid_uid = 8
listen = *
login_greeting = howdy, ready.
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c %k
mail_location = mdbox:~/mdbox
mail_plugins = expire quota zlib
maildir_very_dirty_syncs = yes
namespace {
inbox = yes
location =
prefix =
separator = .
}
namespace {
alias_for =
hidden = yes
inbox = no
list = no
location =
prefix = INBOX.
separator = .
}
passdb {
args = /etc/dovecot/dovecot-sql.conf
driver = sql
}
plugin {
expire = Trash
expire2 = Trash/*
expire3 = Spam
expire_dict = proxy::expire
quota = dict:Your mail quota::proxy::quota
quota_rule = *:bytes=100663296
quota_rule2 = Trash:bytes=+20%%
quota_rule3 = Spam:bytes=+10%%
quota_rule4 = INBOX.Trash:bytes=+20%%
quota_rule5 = INBOX.Spam:bytes=+10%%
quota_rule6 = INBOX.restored_from_backups:bytes=+500%%
sieve = ~/.dovecot.sieve
sieve_after = /var/lib/dovecot/sieve/after.sieve
sieve_before = /var/lib/dovecot/sieve/default.sieve
sieve_dir = ~/sieve
zlib_save = gz
zlib_save_level = 6
}
protocols = " imap pop3"
service anvil {
unix_listener anvil {
group = dovecot
mode = 0660
user = root
}
}
service auth {
client_limit = 6144
unix_listener auth-userdb {
group = mail
mode = 0600
user = mail
}
}
service dict {
unix_listener dict {
group = mail
mode = 0600
user = mail
}
}
service imap-login {
process_min_avail = 10
service_count = 0
vsz_limit = 512 M
}
service imap-postlogin {
executable = script-login /usr/local/sbin/postlogin_imap
}
service imap {
executable = imap imap-postlogin
process_limit = 6144
}
service pop3-login {
process_min_avail = 10
service_count = 0
vsz_limit = 512 M
}
service pop3-postlogin {
executable = script-login /usr/local/sbin/postlogin_pop
}
service pop3 {
executable = pop3 pop3-postlogin
}
service stats {
unix_listener stats-writer {
group = mail
mode = 0660
}
}
ssl_cert =