Skip to content

Instantly share code, notes, and snippets.

@gbrennon
Last active July 11, 2019 15:51
Show Gist options
  • Save gbrennon/ea4b42fbc4d5da1d1ee58eb8df5950b2 to your computer and use it in GitHub Desktop.
Save gbrennon/ea4b42fbc4d5da1d1ee58eb8df5950b2 to your computer and use it in GitHub Desktop.
{
"completed": [
{
"id": "1562788901_f9750ff9-f3ae-4865-a9ea-1339d644f2f5",
"email": "suzana@projelengenharia.com.br",
"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:<carloscesar@mcheckeruscentral.centralus.cloudapp.azure.com>",
"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:<suzana@projelengenharia.com.br>",
"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": "s.abdu@projelengenharia.com.br",
"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:<carlossampaio@mcheckeruscentral.centralus.cloudapp.azure.com>",
"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:<s.abdu@projelengenharia.com.br>",
"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": "marcelo.prado@ici.curitiba.org.br",
"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:<carlossampaio@mcheckeruswest.westus2.cloudapp.azure.com>",
"success": true,
"true_2_ocurrances": true
},
"rply_to": {
"code": 250,
"msg": "250 2.1.5 Ok",
"cmd": "rcpt to:<marcelo.prado@ici.curitiba.org.br>",
"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:<carlossantigo@mcheckeruscentral.centralus.cloudapp.azure.com>",
"success": true,
"true_2_ocurrances": true
},
"rply_to": {
"code": 250,
"msg": "250 2.1.5 Ok",
"cmd": "rcpt to:<marcelo.prado@ici.curitiba.org.br>",
"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": "m.prado@ici.curitiba.org.br",
"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:<carlosalmeida@mcheckeruswest.westus2.cloudapp.azure.com>",
"success": true,
"true_2_ocurrances": true
},
"rply_to": {
"code": 250,
"msg": "250 2.1.5 Ok",
"cmd": "rcpt to:<m.prado@ici.curitiba.org.br>",
"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:<carlosalberto@mcheckeruscentral.centralus.cloudapp.azure.com>",
"success": true,
"true_2_ocurrances": true
},
"rply_to": {
"code": 250,
"msg": "250 2.1.5 Ok",
"cmd": "rcpt to:<m.prado@ici.curitiba.org.br>",
"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
}
]
}
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