Last active
July 11, 2019 15:51
-
-
Save gbrennon/ea4b42fbc4d5da1d1ee58eb8df5950b2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"completed": [ | |
{ | |
"id": "1562788901_f9750ff9-f3ae-4865-a9ea-1339d644f2f5", | |
"email": "[email protected]", | |
"pending_at": 1562788901, | |
"last_seen": 1562789081, | |
"completed_at": 1562789081, | |
"success": true, | |
"reason": null, | |
"response": [ | |
{ | |
"mx.uhserver.com": { | |
"cmds": { | |
"ehlo": { | |
"code": 250, | |
"msg": "250-a2-simpson6.uhserver.com", | |
"cmd": "EHLO mcheckeruscentral.centralus.cloudapp.azure.com", | |
"success": true, | |
"true_2_ocurrances": true | |
}, | |
"mail_from": { | |
"code": 250, | |
"msg": "250 2.1.0 Ok", | |
"cmd": "mail from:<[email protected]>", | |
"success": true, | |
"true_2_ocurrances": true | |
}, | |
"rply_to": { | |
"code": 450, | |
"msg": "450 4.7.1 Client host rejected: cannot find your hostname, [168.61.189.215]", | |
"cmd": "rcpt to:<[email protected]>", | |
"success": false | |
}, | |
"rset": { | |
"code": 250, | |
"msg": "250 2.0.0 Ok", | |
"cmd": "RSET", | |
"success": true, | |
"true_2_ocurrances": true | |
} | |
}, | |
"success": true | |
} | |
} | |
], | |
"mx_records": [ | |
[ | |
"mx.uhserver.com", | |
"200.147.36.29", | |
0 | |
] | |
], | |
"true_2_ocurrances": true | |
}, | |
{ | |
"id": "1562788902_daeb291f-8812-4db1-85df-d0c1d931b615", | |
"email": "[email protected]", | |
"pending_at": 1562788902, | |
"last_seen": 1562789082, | |
"completed_at": 1562789082, | |
"success": true, | |
"reason": null, | |
"response": [ | |
{ | |
"mx.uhserver.com": { | |
"cmds": { | |
"ehlo": { | |
"code": 250, | |
"msg": "250-a2-snowball8.uhserver.com", | |
"cmd": "EHLO mcheckeruscentral.centralus.cloudapp.azure.com", | |
"success": true, | |
"true_2_ocurrances": true | |
}, | |
"mail_from": { | |
"code": 250, | |
"msg": "250 2.1.0 Ok", | |
"cmd": "mail from:<[email protected]>", | |
"success": true, | |
"true_2_ocurrances": true | |
}, | |
"rply_to": { | |
"code": 450, | |
"msg": "450 4.7.1 Client host rejected: cannot find your hostname, [168.61.189.215]", | |
"cmd": "rcpt to:<[email protected]>", | |
"success": false | |
}, | |
"rset": { | |
"code": 250, | |
"msg": "250 2.0.0 Ok", | |
"cmd": "RSET", | |
"success": true, | |
"true_2_ocurrances": true | |
} | |
}, | |
"success": true | |
} | |
} | |
], | |
"mx_records": [ | |
[ | |
"mx.uhserver.com", | |
"200.147.36.29", | |
0 | |
] | |
], | |
"true_2_ocurrances": true | |
}, | |
{ | |
"id": "1562788896_abc97a70-0602-47f5-90be-646fab174eeb", | |
"email": "[email protected]", | |
"pending_at": 1562788896, | |
"last_seen": 1562789122, | |
"completed_at": 1562789122, | |
"success": true, | |
"reason": null, | |
"response": [ | |
{ | |
"mx1.curitiba.pr.gov.br": { | |
"cmds": { | |
"ehlo": { | |
"code": 250, | |
"msg": "250-mx1.curitiba.pr.gov.br", | |
"cmd": "EHLO mcheckeruswest.westus2.cloudapp.azure.com", | |
"success": true, | |
"true_2_ocurrances": true | |
}, | |
"mail_from": { | |
"code": 250, | |
"msg": "250 2.1.0 Ok", | |
"cmd": "mail from:<[email protected]>", | |
"success": true, | |
"true_2_ocurrances": true | |
}, | |
"rply_to": { | |
"code": 250, | |
"msg": "250 2.1.5 Ok", | |
"cmd": "rcpt to:<[email protected]>", | |
"success": true, | |
"true": true, | |
"true_2_ocurrances": true | |
}, | |
"rset": { | |
"code": 250, | |
"msg": "250 2.0.0 Ok", | |
"cmd": "RSET", | |
"success": true, | |
"true_2_ocurrances": true | |
} | |
}, | |
"success": true | |
} | |
}, | |
{ | |
"mx2.curitiba.pr.gov.br": { | |
"cmds": { | |
"ehlo": { | |
"code": 250, | |
"msg": "250-mx2.curitiba.pr.gov.br", | |
"cmd": "EHLO mcheckeruscentral.centralus.cloudapp.azure.com", | |
"success": true, | |
"true_2_ocurrances": true | |
}, | |
"mail_from": { | |
"code": 250, | |
"msg": "250 2.1.0 Ok", | |
"cmd": "mail from:<[email protected]>", | |
"success": true, | |
"true_2_ocurrances": true | |
}, | |
"rply_to": { | |
"code": 250, | |
"msg": "250 2.1.5 Ok", | |
"cmd": "rcpt to:<[email protected]>", | |
"success": true, | |
"true": true, | |
"true_2_ocurrances": true | |
}, | |
"rset": { | |
"code": 250, | |
"msg": "250 2.0.0 Ok", | |
"cmd": "RSET", | |
"success": true, | |
"true_2_ocurrances": true | |
} | |
}, | |
"success": true | |
} | |
} | |
], | |
"mx_records": [ | |
[ | |
"mx1.curitiba.pr.gov.br", | |
"200.203.215.211", | |
5 | |
], | |
[ | |
"mx2.curitiba.pr.gov.br", | |
"200.203.215.212", | |
5 | |
] | |
], | |
"true_2_ocurrances": true, | |
"true": true | |
}, | |
{ | |
"id": "1562788900_dae6c48e-944b-4528-91c3-c28ec7ae0c45", | |
"email": "[email protected]", | |
"pending_at": 1562788900, | |
"last_seen": 1562789145, | |
"completed_at": 1562789145, | |
"success": true, | |
"reason": "Replies are not being notified, try increasing [:persistence_queue][:interval] (SMTPWorker::DeferrableError)", | |
"response": [ | |
{ | |
"mx1.curitiba.pr.gov.br": { | |
"cmds": { | |
"ehlo": { | |
"code": 250, | |
"msg": "250-mx1.curitiba.pr.gov.br", | |
"cmd": "EHLO mcheckeruswest.westus2.cloudapp.azure.com", | |
"success": true, | |
"true_2_ocurrances": true | |
}, | |
"mail_from": { | |
"code": 250, | |
"msg": "250 2.1.0 Ok", | |
"cmd": "mail from:<[email protected]>", | |
"success": true, | |
"true_2_ocurrances": true | |
}, | |
"rply_to": { | |
"code": 250, | |
"msg": "250 2.1.5 Ok", | |
"cmd": "rcpt to:<[email protected]>", | |
"success": true, | |
"true": true, | |
"true_2_ocurrances": true | |
}, | |
"rset": { | |
"code": 250, | |
"msg": "250 2.0.0 Ok", | |
"cmd": "RSET", | |
"success": true, | |
"true_2_ocurrances": true | |
} | |
}, | |
"success": true | |
} | |
}, | |
{ | |
"mx2.curitiba.pr.gov.br": { | |
"cmds": { | |
"ehlo": { | |
"code": 250, | |
"msg": "250-mx2.curitiba.pr.gov.br", | |
"cmd": "EHLO mcheckeruscentral.centralus.cloudapp.azure.com", | |
"success": true, | |
"true_2_ocurrances": true | |
}, | |
"mail_from": { | |
"code": 250, | |
"msg": "250 2.1.0 Ok", | |
"cmd": "mail from:<[email protected]>", | |
"success": true, | |
"true_2_ocurrances": true | |
}, | |
"rply_to": { | |
"code": 250, | |
"msg": "250 2.1.5 Ok", | |
"cmd": "rcpt to:<[email protected]>", | |
"success": true, | |
"true": true, | |
"true_2_ocurrances": true | |
}, | |
"rset": { | |
"code": 250, | |
"msg": "250 2.0.0 Ok", | |
"cmd": "RSET", | |
"success": true, | |
"true_2_ocurrances": true | |
} | |
}, | |
"success": true | |
} | |
} | |
], | |
"mx_records": [ | |
[ | |
"mx1.curitiba.pr.gov.br", | |
"200.203.215.211", | |
5 | |
], | |
[ | |
"mx2.curitiba.pr.gov.br", | |
"200.203.215.212", | |
5 | |
] | |
], | |
"true_2_ocurrances": true, | |
"true": true | |
} | |
] | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import requests | |
import json | |
from telnetlib import Telnet | |
from time import sleep | |
from itertools import islice | |
from random import shuffle | |
base_url = 'http://167.86.127.58:8080/' | |
send_url = base_url + 'send?emails={}' | |
queue_completed_url = base_url + 'queue?status=completed' | |
status_url = base_url + 'status' | |
input_mails_file = 'emails_glauber.txt' | |
output_failed_json_file = 'outputI' | |
def check_status(): | |
resp = requests.get(send_url.format(line)) | |
#print(resp.json()) | |
with open('data.json', 'w') as out_json: | |
json.dump(resp.json(), out_json) | |
def check_mails_from_file(_file): | |
with open(_file) as f: | |
count = 0 | |
lines = f.readlines() | |
shuffle(lines) #shuffle lines of file | |
for line in lines: | |
line = line.strip() | |
print('Checking mail #{}. Address: {}'.format(count, line)) | |
resp = requests.get(send_url.format(line)) | |
print(resp.status_code) | |
count += 1 | |
print('cabou') | |
def check_batch_mails_from_file(_file): | |
n = 15 | |
with open(_file) as f: | |
count = 0 | |
for n_lines in iter(lambda: tuple(islice(f, n)), ()): | |
lines = [line.strip() for line in n_lines] | |
mails = ','.join(lines) | |
print('Checking mails batch #{}. Addresses: {}'.format( | |
count, | |
mails | |
)) | |
resp = requests.get(send_url.format(mails)) | |
print(resp.status_code) | |
count += 1 | |
print('cabou') | |
def get_queue_results(): | |
response = requests.get(queue_completed_url) | |
return response.json() | |
def json_to_file(json_data, out_file): | |
with open(out_file, 'w') as output: | |
json.dump(json_data, output, indent=4) | |
def file_to_completed(json_file): | |
with open(json_file) as file_input: | |
return json.load(file_input)['completed'] | |
def get_failed_completed_calls(): | |
completed_calls = get_queue_results()['completed'] | |
failed_calls = filter(lambda obj: not obj['success'], completed_calls) | |
return failed_calls | |
def telnet_query_builder(sender, receivers): | |
cmds_and_responses = [] | |
for r in receivers: | |
host = r['mx_records'][0][0] | |
receiver = r['email'] | |
tn = Telnet(host, '25', '200') | |
cmds = [ | |
'telnet {} 25'.format(host), | |
'EHLO {}'.format(sender.split('@')[-1]), | |
'mail from:<{}>'.format(sender), | |
'rcpt to:<{}>'.format(receiver), | |
'RSET', | |
] | |
cmds_with_resps = {} | |
for cmd in cmds: | |
tn.write(cmd) | |
resp = tn.read_until('\n') | |
cmds_with_resps[cmd] = resp | |
cmds_and_responses(cmds_with_resps) | |
return cmds_and_responses |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment