diff --git a/mailServer/mailserverManager.py b/mailServer/mailserverManager.py index 2e6a7007e..d12e76174 100755 --- a/mailServer/mailserverManager.py +++ b/mailServer/mailserverManager.py @@ -108,6 +108,10 @@ class MailServerManager(multi.Thread): domainName = data['domain'] userName = data['username'].lower() password = data['passwordByPass'] + try: + EmailLimits = data['EmailLimits'] + except: + EmailLimits = -1 admin = Administrator.objects.get(pk=userID) @@ -122,6 +126,22 @@ class MailServerManager(multi.Thread): result = mailUtilities.createEmailAccount(domainName, userName.lower(), password) if result[0] == 1: + + if EmailLimits != -1: + + lt = '30d' + limitString = f'@{domainName} {str(EmailLimits)}/{lt}\n' + + RandomFile = "/home/cyberpanel/" + str(randint(100000, 999999)) + writeToFile = open(RandomFile, 'w') + writeToFile.write(limitString) + writeToFile.close() + + execPath = "/usr/local/CyberCP/bin/python " + virtualHostUtilities.cyberPanel + "/plogical/mailUtilities.py" + execPath = execPath + f" SaveEmailLimitsNew --tempConfigPath {RandomFile}" + ProcessUtilities.outputExecutioner(execPath) + + data_ret = {'status': 1, 'createEmailStatus': 1, 'error_message': "None"} json_data = json.dumps(data_ret) return HttpResponse(json_data) diff --git a/plogical/test.py b/plogical/test.py index 2ebc2a9f4..e69de29bb 100644 --- a/plogical/test.py +++ b/plogical/test.py @@ -1,132 +0,0 @@ -# # -# # import imaplib -# # import getpass -# # from email import message_from_string -# # import socket -# # -# # import dns.resolver as dnspython -# # -# # def get_mx_records(domain): -# # try: -# # # Query MX records for the domain -# # mx_records = dns.resolver.resolve(domain, 'MX') -# # # Extract and return the MX record data -# # return [(mx.exchange.to_text(), mx.preference) for mx in mx_records] -# # except dns.resolver.NoAnswer: -# # print(f"No MX records found for {domain}") -# # return [] -# # except dns.resolver.NXDOMAIN: -# # print(f"Domain {domain} not found") -# # return [] -# # except Exception as e: -# # print(f"Error: {str(e)}") -# # return [] -# # -# # -# # # IMAP server settings -# # imap_server = '' -# # imap_port = 993 -# # -# # # User credentials -# # email_address = '' -# # password = '' -# # -# # # Connect to the IMAP server -# # mail = imaplib.IMAP4_SSL(imap_server, imap_port) -# # -# # # Log in to the mailbox -# # mail.login(email_address, password) -# # -# # # Select the INBOX -# # mail.select("inbox") -# # -# # # Search for all emails in the INBOX -# # result, data = mail.search(None, "ALL") -# # email_ids = data[0].split() -# # -# # # Fetch and print header information for each email -# # for email_id in email_ids: -# # result, message_data = mail.fetch(email_id, "(BODY[HEADER.FIELDS (FROM TO SUBJECT DATE)])") -# # raw_email = message_data[0][1].decode('utf-8') -# # msg = message_from_string(raw_email) -# # FromDomain = msg['From'].split('@')[1].rstrip('>') -# # MailServer = get_mx_records(FromDomain) -# # print(f'From Domain {FromDomain}') -# # print(f'MX Records of the domains {MailServer}') -# # print(f'Mail Server From Domain {MailServer}') -# # print(f"Email ID: {email_id}") -# # print(f"From: {msg['From']}") -# # print(f"To: {msg['To']}") -# # print(f"Subject: {msg['Subject']}") -# # print(f"Date: {msg['Date']}") -# # print("-" * 30) -# # print(message_data) -# # -# # # Logout -# # mail.logout() -# # # -# # # # from cryptography import x509 -# # # # from cryptography.hazmat.backends import default_backend -# # # # -# # # # def get_domains_covered(cert_path): -# # # # with open(cert_path, 'rb') as cert_file: -# # # # cert_data = cert_file.read() -# # # # cert = x509.load_pem_x509_certificate(cert_data, default_backend()) -# # # # -# # # # # Check for the Subject Alternative Name (SAN) extension -# # # # san_extension = cert.extensions.get_extension_for_class(x509.SubjectAlternativeName) -# # # # -# # # # if san_extension: -# # # # # Extract and print the domains from SAN -# # # # san_domains = san_extension.value.get_values_for_type(x509.DNSName) -# # # # return san_domains -# # # # else: -# # # # # If SAN is not present, return the Common Name as a fallback -# # # # return [cert.subject.get_attributes_for_oid(x509.NameOID.COMMON_NAME)[0].value] -# # # # -# # # # # Example usage -# # # # cert_path = '/etc/letsencrypt/live/cyberplanner.io/fullchain.pem' -# # # # domains_covered = get_domains_covered(cert_path) -# # # # -# # # # print("Domains covered by the certificate:") -# # # # for domain in domains_covered: -# # # # print(domain) -# -# import dns.resolver -# -# -# def query_sbl(ip): -# try: -# # Construct the reverse DNS lookup domain -# reversed_ip = '.'.join(reversed(ip.split('.'))) -# sbl_domain = reversed_ip + '.zen.spamhaus.org' -# -# # Query the SBL DNS server -# result = dns.resolver.resolve(sbl_domain, 'A') -# -# # If the query returns a result, it means the IP is listed in SBL -# return True -# except dns.resolver.NXDOMAIN: -# # If the domain does not exist, the IP is not listed in SBL -# return False -# except dns.resolver.Timeout: -# # Handle DNS query timeout -# print("DNS query timed out") -# return None -# except dns.resolver.NoAnswer: -# # Handle no DNS answer -# print("No DNS answer") -# -# return None -# -# -# # Example usage -# ip_to_check = '209.85.166.5' -# result = query_sbl(ip_to_check) -# if result is True: -# print(f"The IP {ip_to_check} is listed in Spamhaus Block List (SBL)") -# elif result is False: -# print(f"The IP {ip_to_check} is not listed in Spamhaus Block List (SBL)") -# else: -# print("Unable to determine SBL status for the given IP") -#