· 5 years ago · Jun 29, 2020, 04:02 PM
1import spf
2import dmarc
3import dkim
4
5def find_between( s, first, last ):
6 try:
7 start = s.index( first ) + len( first )
8 end = s.index( last, start )
9 return s[start:end]
10 except ValueError:
11 return ""
12
13def mail_to():
14 with open('mail.eml', 'r') as file:
15 raw = file.readlines()
16
17 # get_list = ['From:','To:','Subject:']
18 get_list = ['To:']
19 info_list = []
20
21 for i in raw:
22 for word in get_list:
23 if i.startswith(word):
24 info_list.append(i)
25
26 # print(info_list)
27
28 mailTo = find_between(info_list[0], "<", ">")
29 return mailTo
30
31def mail_from():
32 with open('mail.eml', 'r') as file:
33 raw = file.readlines()
34
35 # get_list = ['From:','To:','Subject:']
36 get_list = ['From:']
37 info_list = []
38
39 for i in raw:
40 for word in get_list:
41 if i.startswith(word):
42 info_list.append(i)
43
44 # print(info_list)
45 mailFrom = find_between(info_list[0], "<", ">")
46 return mailFrom
47
48def ip_from():
49 with open('mail.eml', 'r') as file:
50 raw = file.readlines()
51
52 # get_list = ['From:','To:','Subject:']
53 get_list = ['Received:']
54 info_list = []
55
56 for i in raw:
57 for word in get_list:
58 if i.startswith(word):
59 info_list.append(i)
60
61 # print(info_list)
62 ipFrom = find_between(info_list[0], "[", "]")
63 return ipFrom
64
65def domain_from():
66 with open('mail.eml', 'r') as file:
67 raw = file.readlines()
68
69 # get_list = ['From:','To:','Subject:']
70 get_list = ['From:']
71 info_list = []
72
73 for i in raw:
74 for word in get_list:
75 if i.startswith(word):
76 info_list.append(i)
77
78 # print(info_list)
79 domainFrom = find_between(info_list[0], "@", ">")
80 return domainFrom
81
82def host_from():
83 with open('mail.eml', 'r') as file:
84 raw = file.readlines()
85 get_list = [' by']
86 info_list = []
87
88 for i in raw:
89 for word in get_list:
90 if (" by"in i):
91 info_list.append(i)
92 # print(info_list)
93 hostFrom = find_between(info_list[0], "by ", " ")
94 return hostFrom
95
96def spfCheck():
97 return spf.check2(ip_from(),mail_from(),host_from())
98
99def dmarcCheck():
100 aspf = dmarc.SPF(domain=host_from(), result=dmarc.SPF_PASS)
101 adkim = dmarc.DKIM(domain=domain_from(), result=dmarc.DKIM_PASS)
102 d = dmarc.DMARC()
103 p = d.parse_record(record='v=DMARC1; p=reject;', domain=domain_from())
104 r = d.get_result(p, spf=aspf, dkim=adkim)
105 return (r.result == dmarc.POLICY_PASS)
106
107def dkimCheck():
108 # obecnie nie działa
109 temp=""
110 with open('mail.eml', 'r') as file:
111 raw = file.readlines()
112 get_list = [' by']
113 info_list = []
114
115 for i in raw:
116 temp=temp+i
117 #print(temp)
118 return dkim.verify(temp,tlsrpt='strict')
119
120#print(spf.check2('180.73.166.174', 'someone@gmail.com', 'gmail.com'))
121#print(spf.check2('69.55.226.139','terry@wayforward.net','mx1.wayforward.net'))
122
123
124print(ip_from()+" "+mail_from()+" "+host_from())
125
126print(spfCheck())
127print(dmarcCheck())
128
129#print(dkimCheck())