Yes, I get that. What I would like to know is what are the queries that
Dovecot / Sieve is executing so that I can better determine where the
issue exists? Is there anyway to see them? Do you see an issue anywhere
in my configuration files?
Thank you.
------ Original Message ------
From "Aki Tuomi" <aki.tu...@open-xchange.com>
To "Adam Miller" <a...@ardaemail.com>; "Adam Miller via dovecot"
<dovecot@dovecot.org>
Date 7/23/2024 4:07:22 AM
Subject Re: Re[2]: Sieve Filters with MySQL
Jul 23 10:34:40 lmtp(redacted)<228576><CM1ZFUCHn2bgfAMAwHdlHA>: Debug:
sieve: dict storage: script `default': Script `default' not found at
path priv/sieve/name/default
Aki
On 23/07/2024 13:52 EEST Adam Miller via dovecot <dovecot@dovecot.org> wrote:
Yes, that is where I got the error from. Here’s more from the log file:
Jul 23 10:34:40 lmtp(redacted)<228576><CM1ZFUCHn2bgfAMAwHdlHA>: Debug:
sieve: Pigeonhole version 0.5.16 (09c29328) initializing
Jul 23 10:34:40 lmtp(redacted)<228576><CM1ZFUCHn2bgfAMAwHdlHA>: Debug:
sieve: include: sieve_global is not set; it is currently not possible to
include `:global’ scripts.
Jul 23 10:34:40 lmtp(redacted)<228576><CM1ZFUCHn2bgfAMAwHdlHA>: Debug:
sieve: Sieve imapsieve plugin for Pigeonhole version 0.5.16 (09c29328)
loaded
Jul 23 10:34:40 lmtp(redacted)<228576><CM1ZFUCHn2bgfAMAwHdlHA>: Debug:
sieve: Sieve Extprograms plugin for Pigeonhole version 0.5.16 (09c29328)
loaded
Jul 23 10:34:40 lmtp(redacted)<228576><CM1ZFUCHn2bgfAMAwHdlHA>: Debug:
sieve: dict storage: user=redacted, uri=proxy::sieve
Jul 23 10:34:40 lmtp(redacted)<228576><CM1ZFUCHn2bgfAMAwHdlHA>: Debug:
sieve: dict storage: script `default': Script `default' not found at
path priv/sieve/name/default
Jul 23 10:34:40 lmtp(redacted)<228576><CM1ZFUCHn2bgfAMAwHdlHA>: Debug:
sieve: User has no active script in storage
`dict:proxy::sieve;user=redacted’
Jul 23 10:34:40 lmtp(redacted)<228576><CM1ZFUCHn2bgfAMAwHdlHA>: Debug:
sieve: User has no personal script
Jul 23 10:34:40 lmtp(redacted)<228576><CM1ZFUCHn2bgfAMAwHdlHA>: Debug:
sieve: No scripts to execute: reverting to default delivery.
Is there something specific I should be looking for?
Thank you!
------ Original Message ------
From "Aki Tuomi via dovecot" <dovecot@dovecot.org>
To "Adam Miller" <a...@ardaemail.com>; "Adam Miller via dovecot"
<dovecot@dovecot.org>
Date 7/23/2024 3:35:17 AM
Subject Re: Sieve Filters with MySQL
>Did you try with
>
>mail_debug=yes
>
>and
>
>log_debug=category=sieve
>
>Aki
>
>> On 23/07/2024 13:18 EEST Adam Miller via dovecot <dovecot@dovecot.org>
wrote:
>>
>>
>> Me again! I am trying to get sieve filters working with a MySQL backend
>> but same to be coming up short. Right now, the error I am getting
>> received is:
>>
>>
------------------------------------------------------------------------------------------------------------------
>>
>> "User has no active script in storage
>> dict:proxy::sieve;user=usern...@domain.com"
>>
>>
------------------------------------------------------------------------------------------------------------------
>>
>> The “usern...@domain.com” is obviously the email address of the
>> receiving mailbox.
>>
>> Here’s my latest config:
>>
>> # 2.3.16 (7e2e900c1a): /etc/dovecot/dovecot.conf
>> # Pigeonhole version 0.5.16 (09c29328)
>> # OS: Linux 6.5.0-1020-aws x86_64 Ubuntu 22.04.4 LTS nfs4
>> # Hostname: ec2-us-east-1a-arda-mail-001.ardaemail.com
>> auth_debug = yes
>> auth_mechanisms = plain login
>> auth_verbose = yes
>> auth_worker_max_count = 5
>> base_dir = /var/run/dovecot
>> debug_log_path = /var/log/dovecot/debug.log
>> default_internal_group = ardaemail
>> default_internal_user = ardaemail
>> dict {
>> quota = mysql:/etc/dovecot/inc.d/inc.quota.user.sql.conf
>> sieve = mysql:/etc/dovecot/inc.d/inc.sieve.sql.conf
>> sql = mysql:/etc/dovecot/inc.d/inc.lastlogin.sql.conf
>> }
>> hostname = = mail.ardaemail.com
>> info_log_path = /var/log/dovecot/info.log
>> instance_name = ec2-us-east-1a-arda-mail-001.ardaemail.com
>> listen = 172.16.0.200
>> log_path = /var/log/dovecot/general.log
>> login_greeting = Welcome to ArdaEmail
>> mail_debug = yes
>> mail_gid = ardaemail
>> mail_location = maildir:/mnt/mail/%d/%n
>> mail_max_userip_connections = 1000
>> mail_plugins = " quota mailbox_alias"
>> mail_server_admin = mailto:supp...@ardaemail.com
>> mail_uid = ardaemail
>> maildir_stat_dirs = yes
>> namespace inbox {
>> inbox = yes
>> location =
>> mailbox Archive {
>> auto = subscribe
>> special_use = \Archive
>> }
>> mailbox Drafts {
>> auto = subscribe
>> special_use = \Drafts
>> }
>> mailbox Junk {
>> auto = subscribe
>> autoexpunge = 90 days
>> special_use = \Junk
>> }
>> mailbox Sent {
>> auto = subscribe
>> special_use = \Sent
>> }
>> mailbox Trash {
>> auto = subscribe
>> autoexpunge = 30 days
>> special_use = \Trash
>> }
>> prefix =
>> }
>> passdb {
>> args = /etc/dovecot/inc.d/inc.sql.conf
>> driver = sql
>> }
>> plugin {
>> last_login_dict = proxy::sql
>> last_login_key = # hidden, use -P to show it
>> last_login_precision = ms
>> mailbox_alias_new = Junk Email
>> mailbox_alias_new2 = Junk E-mail
>> mailbox_alias_new3 = Sent Messages
>> mailbox_alias_new4 = Sent Items
>> mailbox_alias_new5 = Deleted Items
>> mailbox_alias_new6 = Junk Mail
>> mailbox_alias_old = Junk
>> mailbox_alias_old2 = Junk
>> mailbox_alias_old3 = Sent
>> mailbox_alias_old4 = Sent
>> mailbox_alias_old5 = Trash
>> mailbox_alias_old6 = Junk
>> quota = dict:User Quota::proxy::quota
>> quota_exceeded_message = Mailbox is full and cannot receive any more
>> emails
>> quota_status_nouser = DUNNO
>> quota_status_success = DUNNO
>> quota_warning = bytes=95%% quota-warning 95 %u
>> quota_warning2 = bytes=85%% quota-warning 85 %u
>> quota_warning3 = bytes=75%% quota-warning 75 %u
>> sieve = dict:proxy::sieve
>> sieve_plugins = sieve_imapsieve sieve_extprograms
>> }
>> postmaster_address = postmas...@ardaemail.com
>> protocols = imap lmtp
>> service auth-worker {
>> group = ardaemail
>> user = ardaemail
>> }
>> service auth {
>> group = ardaemail
>> unix_listener /var/spool/postfix/private/auth {
>> group = postfix
>> mode = 0666
>> user = postfix
>> }
>> unix_listener auth-userdb {
>> group = ardaemail
>> mode = 0666
>> user = ardaemail
>> }
>> user = ardaemail
>> }
>> service imap-login {
>> inet_listener imap {
>> port = 0
>> }
>> inet_listener imaps {
>> port = 993
>> ssl = yes
>> }
>> process_min_avail = 8
>> service_count = 0
>> }
>> service imap {
>> vsz_limit = 4 G
>> }
>> service lmtp {
>> unix_listener /var/spool/postfix/private/dovecot-lmtp {
>> group = postfix
>> mode = 0666
>> user = postfix
>> }
>> }
>> service pop3-login {
>> inet_listener pop3 {
>> port = 0
>> }
>> inet_listener pop3s {
>> port = 0
>> }
>> }
>> service quota-status {
>> executable = /usr/lib/dovecot/quota-status -p postfix
>> unix_listener /var/spool/postfix/private/quota-status {
>> user = postfix
>> }
>> }
>> service quota-warning {
>> executable = script /etc/dovecot/bin/quota-warning.sh
>> unix_listener quota-warning {
>> group = ardaemail
>> mode = 0666
>> user = ardaemail
>> }
>> }
>> service submission-login {
>> inet_listener submission {
>> port = 0
>> }
>> }
>> ssl = required
>> ssl_cert = </etc/letsencrypt/live/mail.ardaemail.com/fullchain.pem
>> ssl_client_ca_dir = /etc/ssl/certs
>> ssl_dh = # hidden, use -P to show it
>> ssl_key = # hidden, use -P to show it
>> ssl_prefer_server_ciphers = yes
>> userdb {
>> args = /etc/dovecot/inc.d/inc.sql.conf
>> driver = sql
>> }
>> protocol imap {
>> imap_metadata = yes
>> mail_plugins = " quota mailbox_alias imap_sieve imap_quota last_login"
>> }
>> protocol lmtp {
>> mail_plugins = " quota mailbox_alias sieve”
>> }
>>
>> This output clearly does not include my Sieve configuration maps so
>> here’s those:
>>
>> connect = host=redacted dbname=redacted user=redacted password=redacted
>>
>> map {
>> pattern = priv/sieve/name/$script_name
>> table = mailboxFilter
>> username_field = email
>> value_field = uuid
>> fields {
>> name = $script_name
>> }
>> }
>>
>> map {
>> pattern = priv/sieve/data/$uuid
>> table = mailboxFilter
>> username_field = email
>> value_field = filter
>> fields {
>> uuid = $uuid
>> }
>> }
>>
>> And here’s the table schema:
>>
>> CREATE TABLE `mailboxFilter` (
>> `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
>> `uuid` varchar(36) NOT NULL,
>> `email` varchar(192) NOT NULL,
>> `name` varchar(255) NOT NULL,
>> `filter` longtext NOT NULL,
>> `isActive` bit(1) NOT NULL DEFAULT b’1’,
>> `createdAt` datetime NOT NULL DEFAULT current_timestamp(),
>> `updatedAt` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE
>> current_timestamp(),
>> PRIMARY KEY (`id`),
>> UNIQUE KEY `UUID` (`uuid`),
>> UNIQUE KEY `EMAIL` (`email`)
>> ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4
>> COLLATE=utf8mb4_general_ci;
>>
>> When I run manually queries, everything works fine though I am not
>> entirely sure what the queries are that Dovecot is executing.
>>
>> Any help is appreciated! Also, if I could use the “isActive” field, that
>> would be great as well. My plan to start here is to only have one record
>> in the table per mailbox which would contain all Sieve filters.
>> Eventually, it would be nice if I could adjust the configuration to
>> allow for more than one that returns concatenated so any help there
>> would be great as well!
>>
>> Thank you!
>> _______________________________________________
>> dovecot mailing list -- dovecot@dovecot.org
>> To unsubscribe send an email to dovecot-le...@dovecot.org
>_______________________________________________
>dovecot mailing list -- dovecot@dovecot.org
>To unsubscribe send an email to dovecot-le...@dovecot.org
_______________________________________________
dovecot mailing list -- dovecot@dovecot.org
To unsubscribe send an email to dovecot-le...@dovecot.org
_______________________________________________
dovecot mailing list -- dovecot@dovecot.org
To unsubscribe send an email to dovecot-le...@dovecot.org