def test_get_mail_stats_method__message_should_have_uid(self): filename = self.create_tmp_log('\n'.join([ "postfix/qmgr[3043]: 25E6CDF04F4: [email protected]", "sasl_username=%s" % self.should_not_exists_mail, ])) parser = PostfixParser(filename) self.assertNotIn(self.should_not_exists_mail, parser.get_mail_stats().keys())
def test_get_mail_stats_method__was_sent_but_does_not_have_sasl_line_in_log( self): filename = self.create_tmp_log('\n'.join([ "postfix/smtp[23225]: 25E6CDF04F4: to=<*****@*****.**>, status=sent", "Jul 10 10:09:09 srv24-s-st postfix/qmgr[3043]: 25E6CDF04F4: removed" ])) parser = PostfixParser(filename) self.assertEqual({}, parser.get_mail_stats())
def test_get_mail_stats_method__should_count_when_it_is_removed(self): filename = self.create_tmp_log('\n'.join([ "postfix/qmgr[3043]: 25E6CDF04F4: [email protected]", "Jul 10 10:09:09 srv24-s-st postfix/qmgr[3043]: 25E6CDF04F4: removed", "postfix/qmgr[3043]: 33333333333: sasl_username=%s" % self.should_not_exists_mail, ])) parser = PostfixParser(filename) self.assertNotIn(self.should_not_exists_mail, parser.get_mail_stats().keys())
def test_get_mail_stats_method__has_1_email_sender(self): filename = self.create_tmp_log('\n'.join([ "postfix/qmgr[3043]: 25E6CDF04F4: sasl_username=%s" % self.mail1, "Jul 10 10:09:09 srv24-s-st postfix/qmgr[3043]: 25E6CDF04F4: removed" ])) parser = PostfixParser(filename) self.assertEqual(parser.get_mail_stats(), {self.mail1: { 'success': 0, 'error': 0 }})
def test_get_mail_stats_method__email_was_sent(self): filename = self.create_tmp_log('\n'.join([ "postfix/qmgr[3043]: 25E6CDF04F4: sasl_username=%s" % self.mail1, "postfix/smtp[23225]: 25E6CDF04F4: to=<*****@*****.**>, status=sent (250 OK)", "Jul 10 10:09:09 srv24-s-st postfix/qmgr[3043]: 25E6CDF04F4: removed", ])) parser = PostfixParser(filename) self.assertEqual(parser.get_mail_stats(), {self.mail1: { 'success': 1, 'error': 0 }})
def test_get_mail_stats_method__email_has_2_sessions(self): filename = self.create_tmp_log('\n'.join([ "postfix/qmgr[3043]: 11111111111: sasl_username=%s" % self.mail1, "postfix/smtp[23225]: 11111111111: to=<*****@*****.**>, status=sent", "Jul 10 10:09:09 srv24-s-st postfix/qmgr[3043]: 11111111111: removed", "postfix/qmgr[3043]: 22222222222: sasl_username=%s" % self.mail1, "postfix/smtp[23225]: 22222222222: to=<*****@*****.**>, status=sent", "Jul 10 10:09:09 srv24-s-st postfix/qmgr[3043]: 22222222222: removed", ])) parser = PostfixParser(filename) self.assertEqual(parser.get_mail_stats(), {self.mail1: { 'success': 2, 'error': 0 }})
def test_get_mail_stats_method__empty_file(self): filename = self.create_tmp_log('') parser = PostfixParser(filename) self.assertEqual(parser.get_mail_stats(), {})
# -*- coding: utf-8 -*- from postfix_parser.parser import PostfixParser stats = PostfixParser('postfix.log').get_mail_stats() for email, report in stats.items(): print( 'From <%s> was sent %s emails successfully, %s ones have errors and was not sent' % (email, report['success'], report['error']))