#!/usr/bin/env python
import sys
import re

from pymailq import store, selector

NAGIOS = {
    'OK': 0,
    'WARN': 1,
    'CRIT': 2
}


def get_mails(mails):
    count = 0
    for mail in mails:
        mail.parse()
        if len([t for t in mail.head.To if '@redhat.com' in t]) > 0:
            count += 1
    return count


def check_mail_queue():
    queue_store = store.PostqueueStore()
    queue_store.load()
    total = get_mails(queue_store.mails)
    if total > 0:
        return (NAGIOS['WARN'], '%s emails staled' % total)
    if total >= 10:
        return (NAGIOS['CRIT'], 'more than 10 emails staled: %s' % total)    
    return (NAGIOS['OK'], None)


def main():
    ok = NAGIOS['OK']
    code, msg  = check_mail_queue()
    if code != ok:
        return (code, msg)
    return (ok, None)


if __name__ == '__main__':
    (code, reason) = main()
    if code != NAGIOS['OK']:
        sys.stderr.write('%s\n' % reason)
    else:
        sys.stdout.write('All checks passed.\n')
    sys.exit(code)

