Is it possible to include extra fields? For example, the “isActive” and make sure it is true / 1?

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 4:44:30 AM
Subject Re: Re[4]: Sieve Filters with MySQL

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
_______________________________________________
dovecot mailing list -- dovecot@dovecot.org
To unsubscribe send an email to dovecot-le...@dovecot.org

Reply via email to