mirror of
https://github.com/Mailu/Mailu.git
synced 2024-12-14 10:53:30 +02:00
649a4fc9cf
Postfix, after expanding the alias, is not transmitting the original envelope recipient email address to dovecot and cannot record it in a Received: header. The LMTP DSN extension allows postfix to specify an ORCPT= parameter to the "RCPT TO:" line (in postfix src/smtp/smtp_proto.c). However, dovecot does not support the DNS extension on the LMTP endpoint. It has preliminary support of the ORCPT parameter in latest versions but is is disabled and not working. The solution taken was to add a sieve script to parse the Received: header written by postfix and parse the original RCPT TO address from it. Then add the header through the "editheader" sieve extension. Later sieve scripts can take this header to perform further filtering.
179 lines
3.4 KiB
Plaintext
179 lines
3.4 KiB
Plaintext
###############
|
|
# General
|
|
###############
|
|
log_path = /dev/stderr
|
|
protocols = imap pop3 lmtp sieve
|
|
postmaster_address = {{ POSTMASTER }}@{{ DOMAIN }}
|
|
hostname = {{ HOSTNAMES.split(",")[0] }}
|
|
mail_plugins = $mail_plugins quota
|
|
submission_host = front
|
|
|
|
service dict {
|
|
unix_listener dict {
|
|
group = mail
|
|
mode = 0660
|
|
}
|
|
}
|
|
|
|
dict {
|
|
sieve = sqlite:/etc/dovecot/pigeonhole-sieve.dict
|
|
}
|
|
|
|
###############
|
|
# Mailboxes
|
|
###############
|
|
first_valid_gid = 8
|
|
first_valid_uid = 8
|
|
mail_location = maildir:/mail/%u
|
|
mail_home = /mail/%u
|
|
mail_uid = mail
|
|
mail_gid = mail
|
|
mail_privileged_group = mail
|
|
mail_access_groups = mail
|
|
maildir_stat_dirs = yes
|
|
|
|
namespace inbox {
|
|
inbox = yes
|
|
mailbox Trash {
|
|
auto = subscribe
|
|
special_use = \Trash
|
|
}
|
|
mailbox Drafts {
|
|
auto = subscribe
|
|
special_use = \Drafts
|
|
}
|
|
mailbox Sent {
|
|
auto = subscribe
|
|
special_use = \Sent
|
|
}
|
|
mailbox Junk {
|
|
auto = subscribe
|
|
special_use = \Junk
|
|
}
|
|
}
|
|
|
|
###############
|
|
# Authentication
|
|
###############
|
|
auth_mechanisms = plain login
|
|
disable_plaintext_auth = no
|
|
ssl_protocols = !SSLv3
|
|
|
|
passdb {
|
|
driver = sql
|
|
args = /etc/dovecot/dovecot-sql.conf.ext
|
|
}
|
|
|
|
userdb {
|
|
driver = sql
|
|
args = /etc/dovecot/dovecot-sql.conf.ext
|
|
}
|
|
|
|
service auth {
|
|
user = dovecot
|
|
unix_listener auth-userdb {
|
|
}
|
|
}
|
|
|
|
service auth-worker {
|
|
unix_listener auth-worker {
|
|
user = dovecot
|
|
group = mail
|
|
mode = 0660
|
|
}
|
|
user = mail
|
|
}
|
|
|
|
###############
|
|
# IMAP & POP
|
|
###############
|
|
|
|
protocol imap {
|
|
mail_plugins = $mail_plugins imap_quota imap_sieve
|
|
}
|
|
|
|
protocol pop3 {
|
|
|
|
}
|
|
|
|
service imap-login {
|
|
inet_listener imap {
|
|
port = 143
|
|
}
|
|
}
|
|
|
|
###############
|
|
# Delivery
|
|
###############
|
|
|
|
protocol lmtp {
|
|
mail_plugins = $mail_plugins sieve
|
|
recipient_delimiter = {{ RECIPIENT_DELIMITER }}
|
|
}
|
|
|
|
service lmtp {
|
|
inet_listener lmtp {
|
|
port = 2525
|
|
}
|
|
}
|
|
|
|
plugin {
|
|
quota = maildir:User quota
|
|
}
|
|
|
|
|
|
###############
|
|
# Filtering
|
|
###############
|
|
|
|
service managesieve-login {
|
|
inet_listener sieve {
|
|
port = 4190
|
|
}
|
|
}
|
|
|
|
service managesieve {
|
|
}
|
|
|
|
plugin {
|
|
sieve = file:~/sieve;active=~/.dovecot.sieve
|
|
sieve_plugins = sieve_extdata sieve_imapsieve sieve_extprograms
|
|
sieve_global_extensions = +vnd.dovecot.extdata +spamtest +spamtestplus +vnd.dovecot.execute +editheader
|
|
sieve_before = /var/lib/dovecot/before.sieve
|
|
sieve_default = /var/lib/dovecot/default.sieve
|
|
sieve_after = /var/lib/dovecot/after.sieve
|
|
sieve_extdata_dict_uri = proxy::sieve
|
|
|
|
# Sieve execute
|
|
sieve_execute_bin_dir = /var/lib/dovecot/bin
|
|
|
|
# Send vacation replies even for aliases
|
|
# See the Pigeonhole documentation about warnings: http://wiki2.dovecot.org/Pigeonhole/Sieve/Extensions/Vacation
|
|
# It appears that our implemntation of mail delivery meets criteria of section 4.5
|
|
# from RFC 5230 and that disabling the recipient checks is not an issue here.
|
|
sieve_vacation_dont_check_recipient = yes
|
|
|
|
# Include the recipient in vacation replies so that DKIM applies
|
|
sieve_vacation_send_from_recipient = yes
|
|
|
|
# extract spam score from headers
|
|
sieve_spamtest_status_type = strlen
|
|
sieve_spamtest_status_header = X-Spam-Level
|
|
sieve_spamtest_max_value = 15
|
|
|
|
# Learn from spam
|
|
imapsieve_mailbox1_name = Junk
|
|
imapsieve_mailbox1_causes = COPY
|
|
imapsieve_mailbox1_before = file:/var/lib/dovecot/report-spam.sieve
|
|
imapsieve_mailbox2_name = *
|
|
imapsieve_mailbox2_from = Junk
|
|
imapsieve_mailbox2_causes = COPY
|
|
imapsieve_mailbox2_before = file:/var/lib/dovecot/report-ham.sieve
|
|
}
|
|
|
|
###############
|
|
# Extensions
|
|
###############
|
|
|
|
!include_try /overrides/dovecot.conf
|