Mail-AddressCheck.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #!/usr/bin/python
  2. # Copyright (c) 2015 by Peter_Siegrist(SystemLoesungen) (PSS @ ZweierNet.ch)
  3. # pss.ZweierNet.ch
  4. #
  5. # This is absolutely free software.
  6. # Use it as you like but don't point the finger of blame to me.
  7. #
  8. from socket import *
  9. import sys
  10. import string
  11. verbose = False
  12. mail_to_check = "";
  13. commands = ['HELO xy',
  14. 'RSET',
  15. 'MAIL FROM: mailverification@example.org',
  16. 'RCPT TO: <__mail_to_check__>']
  17. #-- subs
  18. def usage ():
  19. print('usage: ', sys.argv[0], '[-v] < mailserver-to-check-for > < port-on-server-25-or-587 > < email-adress-to-check >')
  20. sys.exit(False)
  21. #-- end subs
  22. if len(sys.argv) < 4:
  23. usage()
  24. i = 1
  25. if len(sys.argv) == 5:
  26. if sys.argv[i] == '-v':
  27. verbose = True
  28. i+=1
  29. else:
  30. usage()
  31. server = sys.argv[i]
  32. i+=1
  33. port = int(sys.argv[i])
  34. i+=1
  35. mail_to_check = sys.argv[i]
  36. sSocket = socket(AF_INET, SOCK_STREAM)
  37. sSocket.connect((server, port))
  38. recv = sSocket.recv(1024)
  39. if verbose:
  40. print (recv.decode())
  41. for c in commands:
  42. c = c.replace('__mail_to_check__', str(mail_to_check))
  43. if verbose:
  44. print(c)
  45. sSocket.send(c.encode() + '\r\n'.encode())
  46. recv = sSocket.recv(1024)
  47. if verbose:
  48. print (recv.decode())
  49. recv5 = recv.decode().replace("\n", "").replace("\r", "")
  50. if recv5[-2:].lower() == 'ok':
  51. if verbose:
  52. print ('OK')
  53. sys.exit(True)
  54. if verbose:
  55. print ('NOK')
  56. sys.exit(False)