iredapd / plugins /

# Author:   Zhang Huangbin <zhb _at_>
# Purpose:  Force user to change account password in 90 days.

import datetime
from libs import SMTP_ACTIONS

SENDER_SEARCH_ATTRLIST = ['shadowLastChange']

# Force mail user to change password in how many days. Default is 90.

def restriction(**kwargs):
    sender_ldif = kwargs['sender_ldif']

    if not 'mailUser' in sender_ldif['objectClass']:
        return 'DUNNO Not a mail user'

    # Check password last change days
    last_changed_day = int(sender_ldif.get('shadowLastChange', [0])[0])

    # Convert today to shadowLastChange
    today =
    changed_days_of_today = (, today.month, -, 1, 1)).days

    if (last_changed_day + EXPIRED_DAYS) < changed_days_of_today:
        return 'REJECT Password expired, please change your password before sending email.'

    return SMTP_ACTIONS['default']
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.