• Introducing WebPros Cloud - a fully managed infrastructure platform purpose-built to simplify the deployment of WebPros products !  WebPros Cloud enables you to easily deliver WebPros solutions — without the complexity of managing the infrastructure.
    Join the pilot program today!
  • Support for BIND DNS has been removed from Plesk for Windows due to security and maintenance risks.
    If a Plesk for Windows server is still using BIND, the upgrade to Plesk Obsidian 18.0.70 will be unavailable until the administrator switches the DNS server to Microsoft DNS.

How to get mailbox limits from database in 11.5 - was working in previous version

Christopher McBride

Basic Pleskian
Hi,

I have a script which checks the mailboxes of all clients to notify them when they're reaching capacity.

This does so by checking the psa database for their set limit and matching that to the maildirsize file within the user's Maildir directory.

After upgrading, though, my SQL query no longer works - it was:

Code:
SELECT clients.email as owner_email, domains.id, domains.name, Limits.value AS domain_quota, mail.mail_name, mail.mbox_quota from Limits, clients, domains, mail WHERE mail.postbox='true' AND limit_name = 'mbox_quota' AND domains.limits_id = Limits.id AND mail.dom_id = domains.id AND clients.id = domains.cl_id ORDER BY domains.name ASC

However, on closer inspection, all values in the domains table for limit_id are NULL.


Has this changed in 11.5? Is there an alternative way to quickly get all limits for domains?


Thanks
 
It seems it is limitsId from SubscriptionProperties:

mysql> select * from Limits where limit_name = 'mbox_quota';
+----+------------+-----------+
| id | limit_name | value |
+----+------------+-----------+
| 1 | mbox_quota | 104857600 |
| 2 | mbox_quota | 104857600 |
| 3 | mbox_quota | 104857600 |
| 4 | mbox_quota | 104857600 |
| 5 | mbox_quota | -1 |
| 6 | mbox_quota | 104857600 |
| 7 | mbox_quota | -1 |
| 8 | mbox_quota | 104857600 |
| 9 | mbox_quota | -1 |
| 10 | mbox_quota | 104857600 |
| 13 | mbox_quota | 104857600 |
| 14 | mbox_quota | 104857600 |
| 15 | mbox_quota | 104857600 |
| 16 | mbox_quota | 104857600 |
+----+------------+-----------+
14 rows in set (0.00 sec)

mysql> select * from SubscriptionProperties where name='limitsId';
+-----------------+----------+-------+
| subscription_id | name | value |
+-----------------+----------+-------+
| 1 | limitsId | 1 |
| 5 | limitsId | 5 |
| 7 | limitsId | 7 |
| 9 | limitsId | 9 |
| 13 | limitsId | 13 |
| 14 | limitsId | 14 |
| 15 | limitsId | 15 |
| 16 | limitsId | 16 |
+-----------------+----------+-------+
8 rows in set (0.00 sec)
 
Thanks Igor.

The query has then been refactored to:

Code:
SELECT domains.id, domains.name, clients.email as owner_email, mail.mail_name, Limits.value AS domain_quota, mail.mbox_quota from Limits, clients, domains, mail, Subscriptions, SubscriptionProperties WHERE mail.postbox='true' AND limit_name = 'mbox_quota' AND mail.dom_id = domains.id AND clients.id = domains.cl_id AND Subscriptions.id=SubscriptionProperties.subscription_id AND Subscriptions.object_type='domain' AND object_id=domains.id AND SubscriptionProperties.name = 'limitsID' AND SubscriptionProperties.value = Limits.id ORDER BY domains.name ASC
 
Back
Top