Christoph Lukas
2018-Mar-10 10:37 UTC
quota-status: Issues with uppercase recipient address
Hello list,
Dovecot Version: 2.2.34 (874deae) on FreeBSD
MTA: Postfix 3.3.0
I've got an issue with the quota-status service:
Something breaks when receiving mail with a recipient address that includes
non-lowercase characters,
for example foo at Example.com instead of foo at example.com:
postfix log:
postfix/smtp/smtpd[83387]: NOQUEUE: reject_warning: RCPT from
mout01.posteo.de[185.67.36.65]:
450 4.7.1 <foo at Example.com>: Recipient address rejected: Invalid user
settings. Refer to server
log for more information.; from=<[REDACTED]> to=<foo at
Example.com> proto=ESMTP helo=<mout01.posteo.de>
dovecot.log:
quota-status(foo at Example.com): Error: User initialization failed:
Namespace '': mkdir(/srv/mail/Example.com/foo/mailboxes) failed:
Permission denied
(euid=1001(vmail) egid=1001(vmail) missing +w perm: /srv/mail, dir owned by
0:1001 mode=0755)
The user_query has already been altered to include L, however the issue
persists.
user_query = \
SELECT
CONCAT('/srv/mail/','%Ld','/','%Ln','/')
AS home, \
1001 AS uid, \
1001 AS gid, \
concat('*:bytes=', quota) AS quota_rule \
FROM mailbox WHERE username = '%Lu' \
AND active = 1
Thank you for any suggestions.
Christoph
# 2.2.34 (874deae): /usr/local/etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.22 (22940fb7)
# OS: FreeBSD 11.1-STABLE amd64 zfs
# Hostname: mail
auth_default_realm = firc.de
auth_mechanisms = plain login
auth_username_chars =
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_ at +
auth_username_format =
auth_verbose = yes
base_dir = /var/run/dovecot/
first_valid_gid = 1001
first_valid_uid = 1001
hostname = mail.firc.de
info_log_path = /var/log/dovecot/dovecot-info.log
last_valid_gid = 1001
last_valid_uid = 1001
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
lda_original_recipient_header = X-Original-To
log_path = /var/log/dovecot/dovecot.log
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c
%k
mail_gid = 1001
mail_location = sdbox:/srv/mail/%d/%n
mail_plugins = acl fts fts_solr quota
mail_uid = 1001
mailbox_list_index = yes
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 spamtest spamtestplus imapsieve
vnd.dovecot.imapsieve
namespace inbox {
inbox = yes
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox Entw?rfe {
special_use = \Drafts
}
mailbox "Gel?schte Elemente" {
special_use = \Trash
}
mailbox "Gesendete Elemente" {
special_use = \Sent
}
mailbox Junk-E-Mail {
special_use = \Junk
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix =
}
passdb {
args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
plugin {
acl = vfile
acl_shared_dict = file:/srv/mail/dovecot/shared-mailboxes
antispam_backend = mailtrain
antispam_mail_notspam = learn_ham
antispam_mail_sendmail = /usr/local/bin/rspamc
antispam_mail_sendmail_args = -h;10.0.110.27:11334;-P;[REDACTED]
antispam_mail_spam = learn_spam
antispam_spam = Junk
antispam_trash = Trash
fts = solr
fts_autoindex = yes
fts_solr = url=http://127.0.0.1:8983/solr/dovecot/
imapsieve_mailbox1_before =
file:/usr/local/etc/dovecot/sieve/report-spam.sieve
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_name = Junk
imapsieve_mailbox2_before = file:/usr/local/etc/dovecot/sieve/report-ham.sieve
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_from = Junk
imapsieve_mailbox2_name = *
quota = count:User quota
quota_grace = 10%%
quota_rule2 = Trash:storage=+100M
quota_status_nouser = DUNNO
quota_status_overquota = 552 5.2.2 Mailbox is full
quota_status_success = DUNNO
quota_vsizes = yes
sieve = /srv/mail/%d/%n/dovecot.sieve
sieve_default = /srv/mail/dovecot/default.sieve
sieve_extensions = +spamtest +spamtestplus
sieve_global_extensions = +vnd.dovecot.pipe
sieve_pipe_bin_dir = /usr/local/etc/dovecot/sieve
sieve_plugins = sieve_imapsieve sieve_extprograms
sieve_spamtest_max_header = X-Spamd-Result: default: [[:alnum:]]+
\[-?[[:digit:]]+\.[[:digit:]]+ / (-?[[:digit:]]+\.[[:digit:]]+)\]
sieve_spamtest_status_header = X-Spamd-Result: default: [[:alnum:]]+
\[(-?[[:digit:]]+\.[[:digit:]]+) / -?[[:digit:]]+\.[[:digit:]]+\]
sieve_spamtest_status_type = score
}
postmaster_address = postmaster at firc.de
protocols = imap pop3 lmtp sieve
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0666
user = postfix
}
unix_listener auth-userdb {
group = vmail
user = vmail
}
}
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
}
service pop3-login {
inet_listener pop3 {
port = 110
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
service quota-status {
client_limit = 1
executable = quota-status -p postfix
inet_listener {
port = 12340
}
}
ssl_alt_cert = </usr/local/etc/ssl/acme/mail.firc.de_ecc/cert.pem
ssl_alt_key = </usr/local/etc/ssl/acme/mail.firc.de_ecc/key.pem
ssl_ca = /usr/local/etc/ssl/acme/ca.pem
ssl_cert = </usr/local/etc/ssl/acme/mail.firc.de/cert.pem
ssl_dh_parameters_length = 2048
ssl_key = # hidden, use -P to show it
ssl_protocols = !SSLv3
userdb {
args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
protocol lmtp {
mail_plugins = acl fts fts_solr quota sieve
}
protocol !indexer-worker {
mail_vsize_bg_after_count = 100
}
protocol imap {
mail_max_userip_connections = 50
mail_plugins = acl fts fts_solr quota imap_sieve imap_acl imap_quota
plugin {
acl = vfile
}
}
protocol lda {
mail_plugins = acl fts fts_solr quota sieve quota
}
Change mail_location too
---Aki TuomiDovecot oy
-------- Original message --------From: Christoph Lukas <clukas at
firc.de> Date: 10/03/2018 12:37 (GMT+02:00) To: dovecot at dovecot.org
Subject: quota-status: Issues with uppercase recipient address
Hello list,
Dovecot Version: 2.2.34 (874deae) on FreeBSD
MTA: Postfix 3.3.0
I've got an issue with the quota-status service:
Something breaks when receiving mail with a recipient address that includes
non-lowercase characters,
for example foo at Example.com instead of foo at example.com:
postfix log:
postfix/smtp/smtpd[83387]: NOQUEUE: reject_warning: RCPT from
mout01.posteo.de[185.67.36.65]:
? 450 4.7.1 <foo at Example.com>: Recipient address rejected: Invalid user
settings. Refer to server
? log for more information.; from=<[REDACTED]> to=<foo at
Example.com> proto=ESMTP helo=<mout01.posteo.de>
dovecot.log:
quota-status(foo at Example.com): Error: User initialization failed:
? Namespace '': mkdir(/srv/mail/Example.com/foo/mailboxes) failed:
Permission denied
? (euid=1001(vmail) egid=1001(vmail) missing +w perm: /srv/mail, dir owned by
0:1001 mode=0755)
The user_query has already been altered to include L, however the issue
persists.
user_query = \
SELECT
CONCAT('/srv/mail/','%Ld','/','%Ln','/')
AS home, \
1001 AS uid, \
1001 AS gid, \
concat('*:bytes=', quota) AS quota_rule \
FROM mailbox WHERE username = '%Lu' \
AND active = 1
Thank you for any suggestions.
Christoph
# 2.2.34 (874deae): /usr/local/etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.22 (22940fb7)
# OS: FreeBSD 11.1-STABLE amd64? zfs
# Hostname: mail
auth_default_realm = firc.de
auth_mechanisms = plain login
auth_username_chars =
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_ at +
auth_username_format =
auth_verbose = yes
base_dir = /var/run/dovecot/
first_valid_gid = 1001
first_valid_uid = 1001
hostname = mail.firc.de
info_log_path = /var/log/dovecot/dovecot-info.log
last_valid_gid = 1001
last_valid_uid = 1001
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
lda_original_recipient_header = X-Original-To
log_path = /var/log/dovecot/dovecot.log
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c
%k
mail_gid = 1001
mail_location = sdbox:/srv/mail/%d/%n
mail_plugins = acl fts fts_solr quota
mail_uid = 1001
mailbox_list_index = yes
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 spamtest spamtestplus imapsieve
vnd.dovecot.imapsieve
namespace inbox {
? inbox = yes
? location =
? mailbox Drafts {
??? special_use = \Drafts
? }
? mailbox Entw?rfe {
??? special_use = \Drafts
? }
? mailbox "Gel?schte Elemente" {
??? special_use = \Trash
? }
? mailbox "Gesendete Elemente" {
??? special_use = \Sent
? }
? mailbox Junk-E-Mail {
??? special_use = \Junk
? }
? mailbox Junk {
??? special_use = \Junk
? }
? mailbox Sent {
??? special_use = \Sent
? }
? mailbox "Sent Messages" {
??? special_use = \Sent
? }
? mailbox Trash {
??? special_use = \Trash
? }
? prefix =
}
passdb {
? args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
? driver = sql
}
plugin {
? acl = vfile
? acl_shared_dict = file:/srv/mail/dovecot/shared-mailboxes
? antispam_backend = mailtrain
? antispam_mail_notspam = learn_ham
? antispam_mail_sendmail = /usr/local/bin/rspamc
? antispam_mail_sendmail_args = -h;10.0.110.27:11334;-P;[REDACTED]
? antispam_mail_spam = learn_spam
? antispam_spam = Junk
? antispam_trash = Trash
? fts = solr
? fts_autoindex = yes
? fts_solr = url=http://127.0.0.1:8983/solr/dovecot/
? imapsieve_mailbox1_before =
file:/usr/local/etc/dovecot/sieve/report-spam.sieve
? imapsieve_mailbox1_causes = COPY
? imapsieve_mailbox1_name = Junk
? imapsieve_mailbox2_before = file:/usr/local/etc/dovecot/sieve/report-ham.sieve
? imapsieve_mailbox2_causes = COPY
? imapsieve_mailbox2_from = Junk
? imapsieve_mailbox2_name = *
? quota = count:User quota
? quota_grace = 10%%
? quota_rule2 = Trash:storage=+100M
? quota_status_nouser = DUNNO
? quota_status_overquota = 552 5.2.2 Mailbox is full
? quota_status_success = DUNNO
? quota_vsizes = yes
? sieve = /srv/mail/%d/%n/dovecot.sieve
? sieve_default = /srv/mail/dovecot/default.sieve
? sieve_extensions = +spamtest +spamtestplus
? sieve_global_extensions = +vnd.dovecot.pipe
? sieve_pipe_bin_dir = /usr/local/etc/dovecot/sieve
? sieve_plugins = sieve_imapsieve sieve_extprograms
? sieve_spamtest_max_header = X-Spamd-Result: default: [[:alnum:]]+
\[-?[[:digit:]]+\.[[:digit:]]+ / (-?[[:digit:]]+\.[[:digit:]]+)\]
? sieve_spamtest_status_header = X-Spamd-Result: default: [[:alnum:]]+
\[(-?[[:digit:]]+\.[[:digit:]]+) / -?[[:digit:]]+\.[[:digit:]]+\]
? sieve_spamtest_status_type = score
}
postmaster_address = postmaster at firc.de
protocols = imap pop3 lmtp sieve
service auth {
? unix_listener /var/spool/postfix/private/auth {
??? group = postfix
??? mode = 0666
??? user = postfix
? }
? unix_listener auth-userdb {
??? group = vmail
??? user = vmail
? }
}
service imap-login {
? inet_listener imap {
??? port = 143
? }
? inet_listener imaps {
??? port = 993
??? ssl = yes
? }
}
service pop3-login {
? inet_listener pop3 {
??? port = 110
? }
? inet_listener pop3s {
??? port = 995
??? ssl = yes
? }
}
service quota-status {
? client_limit = 1
? executable = quota-status -p postfix
? inet_listener {
??? port = 12340
? }
}
ssl_alt_cert = </usr/local/etc/ssl/acme/mail.firc.de_ecc/cert.pem
ssl_alt_key = </usr/local/etc/ssl/acme/mail.firc.de_ecc/key.pem
ssl_ca = /usr/local/etc/ssl/acme/ca.pem
ssl_cert = </usr/local/etc/ssl/acme/mail.firc.de/cert.pem
ssl_dh_parameters_length = 2048
ssl_key =? # hidden, use -P to show it
ssl_protocols = !SSLv3
userdb {
? args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
? driver = sql
}
protocol lmtp {
? mail_plugins = acl fts fts_solr quota sieve
}
protocol !indexer-worker {
? mail_vsize_bg_after_count = 100
}
protocol imap {
? mail_max_userip_connections = 50
? mail_plugins = acl fts fts_solr quota imap_sieve imap_acl imap_quota
? plugin {
??? acl = vfile
? }
}
protocol lda {
? mail_plugins = acl fts fts_solr quota sieve quota
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<https://dovecot.org/pipermail/dovecot/attachments/20180310/6beb5e21/attachment.html>