# Author: Kerry Cordero # Version: 1.0.0 # Description: This script will look at a file called "mx-records.txt" and run a DIG MX scan against it. If it exists, it will be listed in green. If not, it show "No Record" in red. import os import subprocess from prettytable import PrettyTable from termcolor import colored # Function to perform a DNS MX record lookup using dig def get_mx_record(domain): try: # Run the dig command to get MX records result = subprocess.check_output(['dig', '+short', 'MX', domain], text=True) # If the result is not empty, return it, otherwise return None return result.strip() if result.strip() else None except Exception as e: print(f"Error while executing dig command: {e}") return None # Get the absolute directory path of this script script_dir = os.path.dirname(os.path.abspath(__file__)) # Construct the absolute file path file_path = os.path.join(script_dir, 'mx-records.txt') # Read the list of FQDNs from the file try: with open(file_path, "r") as file: domains = [line.strip() for line in file.readlines()] except FileNotFoundError: print(f"Error: File mx-records.txt not found in {script_dir}.") exit() # Create a table with PrettyTable table = PrettyTable() table.field_names = ["Domain", "MX Record"] # Loop through each domain and perform a DNS MX record lookup for domain in domains: mx_record = get_mx_record(domain) # If an MX record exists, add it to the table in green # Otherwise, add "No Record" in red if mx_record: table.add_row([domain, colored(mx_record, 'green')]) else: table.add_row([domain, colored("No Record", 'red')]) # Display the table print(table)