update Email piping to work via postfix filters

Update the email piping to work via postfix filters vs aliases which were not working on all tests.
This commit is contained in:
spyngamerman
2019-11-08 00:50:18 -05:00
committed by GitHub
parent 65ce3e5098
commit b92b64bf25

View File

@@ -26,6 +26,7 @@ from plogical.dnsUtilities import DNS
from loginSystem.models import Administrator from loginSystem.models import Administrator
from plogical.processUtilities import ProcessUtilities from plogical.processUtilities import ProcessUtilities
import bcrypt import bcrypt
from websiteFunctions.models import Websites
class MailServerManager: class MailServerManager:
@@ -355,24 +356,19 @@ class MailServerManager:
## Delete Email PIPE ## Delete Email PIPE
sourceusername = source.split("@")[0] sourceusername = source.split("@")[0]
virtualalias = '%s %salias' % (source, sourceusername) virtualfilter = '%s FILTER %spipe:dummy' % (source, sourceusername)
pipealias = '%salias: "|%s"' % (sourceusername, destination) command = "sed -i 's/^" + source + ".*//g' /etc/postfix/script_filter"
command = "sed -i 's/^" + source + ".*//g' /etc/postfix/virtual"
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command)
command = "sed -i 's/^" + sourceusername + ".*//g' /etc/aliases" command = "sed -i 's/^" + sourceusername + "pipe.*//g' /etc/postfix/master.cf"
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command)
#### Restarting Postfix and newalias #### Hashing filter Reloading Postfix
command = "postmap /etc/postfix/script_filter"
command = "postmap /etc/postfix/virtual"
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command)
command = "postfix reload"
command = "systemctl restart postfix"
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command)
## ##
command = "newaliases"
ProcessUtilities.executioner(command)
data_ret = {'status': 1, 'deleteForwardingStatus': 1, 'error_message': "None", data_ret = {'status': 1, 'deleteForwardingStatus': 1, 'error_message': "None",
'successMessage': 'Successfully deleted!'} 'successMessage': 'Successfully deleted!'}
@@ -421,29 +417,35 @@ class MailServerManager:
forwarding = Pipeprograms(source=source, destination=destination) forwarding = Pipeprograms(source=source, destination=destination)
forwarding.save() forwarding.save()
## Create Email PIPE ## Create Email PIPE filter
## example@domain.com examplealias ## example@domain.com FILTER support:dummy
sourceusername = source.split("@")[0] sourceusername = source.split("@")[0]
virtualalias = '%s %salias' % (source, sourceusername) virtualfilter = '%s FILTER %spipe:dummy' % (source, sourceusername)
command = "echo '" + virtualalias + "' >> /etc/postfix/virtual" command = "echo '" + virtualfilter + "' >> /etc/postfix/script_filter"
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command)
## examplealias: "|/usr/bin/php -q /home/domain.com/public_html/ticket/api/pipe.php" ## support unix - n n - - pipe flags=Rq user=domain argv=/usr/bin/php -q /home/domain.com/public_html/ticket/api/pipe.php
pipealias = '%salias: "|%s"' % (sourceusername, destination) ## Find Unix file owner of provided pipe
command = "echo '" + pipealias + "' >> /etc/aliases" domainName = source.split("@")[1]
website = Websites.objects.get(domain=domainName)
externalApp = website.externalApp
pipeowner = externalApp
## Add Filter pipe to postfix /etc/postfix/master.cf
filterpipe = '%spipe unix - n n - - pipe flags=Rq user=%s argv=%s -f $(sender) -- $(recipient)' % (sourceusername, pipeowner, destination)
command = "echo '" + filterpipe + "' >> /etc/postfix/master.cf"
ProcessUtilities.executioner(command)
## Add Check Recipient Hash to postfix /etc/postfix/main.cf
command = "sed -i 's|^smtpd_recipient_restrictions =.*|smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access hash:/etc/postfix/script_filter, permit|' /etc/postfix/main.cf"
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command)
#### Restarting Postfix and newalias #### Hashing filter Reloading Postfix
command = "postmap /etc/postfix/script_filter"
command = "postmap /etc/postfix/virtual"
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command)
command = "postfix reload"
command = "systemctl restart postfix"
ProcessUtilities.executioner(command) ProcessUtilities.executioner(command)
## ##
command = "newaliases"
ProcessUtilities.executioner(command)
data_ret = {'status': 1, 'createStatus': 1, 'error_message': "None", 'successMessage': 'Successfully Created!'} data_ret = {'status': 1, 'createStatus': 1, 'error_message': "None", 'successMessage': 'Successfully Created!'}
json_data = json.dumps(data_ret) json_data = json.dumps(data_ret)