• Please be aware: Kaspersky Anti-Virus has been deprecated
    With the upgrade to Plesk Obsidian 18.0.64, "Kaspersky Anti-Virus for Servers" will be automatically removed from the servers it is installed on. We recommend that you migrate to Sophos Anti-Virus for Servers.
  • The Horde webmail has been deprecated. Its complete removal is scheduled for April 2025. For details and recommended actions, see the Feature and Deprecation Plan.
  • We’re working on enhancing the Monitoring feature in Plesk, and we could really use your expertise! If you’re open to sharing your experiences with server and website monitoring or providing feedback, we’d love to have a one-hour online meeting with you.

Issue Find all forwarded mail accounts - forwarding activated

Michael K

New Pleskian
Hallo

I try to find all mail accounts that are forwarded to certain domain
Since there is to my knowledge no command-line program for this, I look at the PSA database directly.

Code:
SELECT m.id,
        concat(lower(m.mail_name), '@', lower(d.name)) as mailaddress,
        (case when postbox = 'true' THEN 1 ELSE 0 END) AS is_postbox,
        count(r.id) as num_redirects,
        group_concat(r.address) as redirects,
        m.redirect,
        round (if(m.mbox_quota = -1, Limits.value, m.mbox_quota)/1024/1024) as 'mailquota',
        sfp_action.value as spam_action,
        sfp_required_score.value as spam_required_score
    FROM mail m
        LEFT JOIN domains d ON (m.dom_id = d.id)
        LEFT JOIN accounts a ON (m.account_id = a.id)
        LEFT JOIN Subscriptions ON (m.dom_id=Subscriptions.object_id) 
        LEFT JOIN SubscriptionProperties ON (Subscriptions.id=SubscriptionProperties.subscription_id AND SubscriptionProperties.name='limitsId')
        LEFT JOIN Limits ON (Limits.id=SubscriptionProperties.value AND limit_name = 'mbox_quota')
        LEFT JOIN mail_redir r ON (m.id = r.mn_id) 
    LEFT JOIN spamfilter sf ON (sf.username= concat(m.mail_name, "@", d.name))
    LEFT JOIN spamfilter_preferences sfp_action ON (sf.id=sfp_action.spamfilter_id AND sfp_action.preference='action')
    LEFT JOIN spamfilter_preferences sfp_required_score ON (sf.id=sfp_required_score.spamfilter_id AND sfp_required_score.preference='required_score')
    GROUP BY m.id 
    ORDER BY d.name , mailaddress


The query above lists all accounts where mail forwarding (a.k.a. redirect) is defined.
The trouble is that it does not catch if a forwarding address is inserted, but forwarding is switched off.
The DB field mail.redirect is always set to false.

Where do I need to look fort the extra info?

Thanks
 

Attachments

  • Auswahl_001.png
    Auswahl_001.png
    45.4 KB · Views: 6
Probably this will do it:
Code:
select concat(a.mail_name,'@',d.name) as EMAIL, c.address as FORWARDER, a.mail_group as Enabled, d.name from mail a, mail_redir c,domains d where a.id=c.mn_id and d.id=a.dom_id;

1589737342791.png

Edit:
Additionally, over the CLI you can get them also (slower than DB)
Code:
# for i in $(plesk bin mail -l | grep -v Alias |  awk '{print $NF}'); do plesk bin mail -i $i | grep Mailgroup |  awk '{print $NF}' | grep 'true' &> /dev/null; if [ $? == 0 ]; then echo "$i"; fi; done

1589738082726.png

This would output all emails that have the forwarding enabled
 
Last edited:
Back
Top