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

Reply via email to