You can try

doveadm dict get -u adam proxy::sieve priv/sieve/name/default

this should return id of the default script.

doveadm dict get -u adam proxy::sieve priv/sieve/data/<id>

should return the actual script.

See https://doc.dovecot.org/configuration_manual/sieve/dict/

Aki


> On 23/07/2024 14:09 EEST Adam Miller via dovecot <dovecot@dovecot.org> wrote:
> 
>  
> 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
_______________________________________________
dovecot mailing list -- dovecot@dovecot.org
To unsubscribe send an email to dovecot-le...@dovecot.org

Reply via email to