Hello Michael,
Thanks for helping me!
I too use dovecot, but I'm not really familiar with it.
That's why I took most of my config from a tutorial.
As far as I can tell, I have to put something like this into my config:
protocol lmtp {
mail_plugins = $mail_plugins sieve
}
But how do I connect it with my script?
I'm thinking of using a script like this:
#!/bin/sh
# Usage: $0 user[+tag]@domain.tld
# user[+tag]
user_tag=$(echo "$1" | cut -d@ -f1)
# domain.tld
domain=$(echo "$1" | cut -d@ -f2)
# user
user=$(echo "${user_tag}" | cut -d+ -f1)
# [tag]
tag=$(echo "${user_tag}" | cut -d+ -f2)
prefix="/var/vmail/${domain}/${user}"
[ "$tag" ] && echo "${prefix}/${tag}" || echo "${prefix}/Inbox"
My current /etc/dovecot/local.conf:
auth_mechanisms = plain login
first_valid_uid = 2000
first_valid_gid = 2000
mail_plugin_dir = /usr/local/lib/dovecot
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character
vacation subaddress comparator-i;ascii-numeric relational regex imap4flags
copy include variables body enotify environment mailbox date index ihave
duplicate mime foreverypart extracttext imapsieve vnd.dovecot.imapsieve
mbox_write_locks = fcntl
mmap_disable = yes
passdb {
args = scheme=CRYPT username_format=%u /etc/mail/credentials.dovecot
driver = passwd-file
name =
}
mail_location = maildir:/var/vmail/%d/%n:INBOX=/var/vmail/%d/%n/Inbox:LAYOUT=fs
namespace inbox {
inbox = yes
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Junk {
auto = subscribe
special_use = \Junk
autoexpunge = 30d
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox Trash {
auto = subscribe
special_use = \Trash
}
mailbox Archive {
auto = subscribe
special_use = \Archive
}
}
plugin {
imapsieve_mailbox1_before =
file:/usr/local/lib/dovecot/sieve/report-spam.sieve
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_name = Junk
imapsieve_mailbox2_before =
file:/usr/local/lib/dovecot/sieve/report-ham.sieve
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_from = Junk
imapsieve_mailbox2_name = *
sieve = file:~/sieve;active=~/.dovecot.sieve
sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
sieve_pipe_bin_dir = /usr/local/lib/dovecot/sieve
sieve_plugins = sieve_imapsieve sieve_extprograms
}
protocols = imap sieve
service imap-login {
inet_listener imap {
port = 0
}
}
service managesieve-login {
inet_listener sieve {
port = 4190
}
inet_listener sieve_deprecated {
port = 2000
}
}
ssl_cert = </etc/ssl/mixdown.me.crt
ssl_key = </etc/ssl/private/mixdown.me.key
userdb {
args = username_format=%u /etc/mail/credentials.dovecot
driver = passwd-file
name =
}
protocol imap {
mail_plugins = " imap_sieve"
}
On 09.04.23 22:00, Michael Breuer wrote:
Hello Benjamin,
what mda do you use? I use dovecot and a sieve script to process incoming mail.
Instead of saving mail directly to maildir, I transfer it to the mda via lmtp.
The required changes on the smtpd site would look like this:
On 9. Apr 2023, at 16:04, Benjamin Stürz <benni+open...@stuerz.xyz> wrote:
I think this line has to be changed:
action "domain_mail" maildir
"/var/vmail/%{dest.domain:lowercase}/%{dest.user:lowercase|strip}/Inbox" virtual
<virtuals>
action "domain_mail" lmtp "/var/dovecot/lmtp" virtual <virtuals>
In dovecot, you need to activate&configure the sieve plugin and a script for
your user account.