Skip to content

Commit b92b64b

Browse files
authored
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.
1 parent 65ce3e5 commit b92b64b

File tree

1 file changed

+27
-25
lines changed

1 file changed

+27
-25
lines changed

mailServer/mailserverManager.py

+27-25
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
from loginSystem.models import Administrator
2727
from plogical.processUtilities import ProcessUtilities
2828
import bcrypt
29+
from websiteFunctions.models import Websites
2930

3031
class MailServerManager:
3132

@@ -355,24 +356,19 @@ def submitForwardDeletion(self):
355356

356357
## Delete Email PIPE
357358
sourceusername = source.split("@")[0]
358-
virtualalias = '%s %salias' % (source, sourceusername)
359-
pipealias = '%salias: "|%s"' % (sourceusername, destination)
360-
command = "sed -i 's/^" + source + ".*//g' /etc/postfix/virtual"
359+
virtualfilter = '%s FILTER %spipe:dummy' % (source, sourceusername)
360+
command = "sed -i 's/^" + source + ".*//g' /etc/postfix/script_filter"
361361
ProcessUtilities.executioner(command)
362-
command = "sed -i 's/^" + sourceusername + ".*//g' /etc/aliases"
362+
command = "sed -i 's/^" + sourceusername + "pipe.*//g' /etc/postfix/master.cf"
363363
ProcessUtilities.executioner(command)
364364

365-
#### Restarting Postfix and newalias
366-
367-
command = "postmap /etc/postfix/virtual"
365+
#### Hashing filter Reloading Postfix
366+
command = "postmap /etc/postfix/script_filter"
368367
ProcessUtilities.executioner(command)
369-
370-
command = "systemctl restart postfix"
368+
command = "postfix reload"
371369
ProcessUtilities.executioner(command)
372370
##
373371

374-
command = "newaliases"
375-
ProcessUtilities.executioner(command)
376372

377373
data_ret = {'status': 1, 'deleteForwardingStatus': 1, 'error_message': "None",
378374
'successMessage': 'Successfully deleted!'}
@@ -421,29 +417,35 @@ def submitEmailForwardingCreation(self):
421417
forwarding = Pipeprograms(source=source, destination=destination)
422418
forwarding.save()
423419

424-
## Create Email PIPE
425-
## example@domain.com examplealias
420+
## Create Email PIPE filter
421+
## example@domain.com FILTER support:dummy
426422
sourceusername = source.split("@")[0]
427-
virtualalias = '%s %salias' % (source, sourceusername)
428-
command = "echo '" + virtualalias + "' >> /etc/postfix/virtual"
423+
virtualfilter = '%s FILTER %spipe:dummy' % (source, sourceusername)
424+
command = "echo '" + virtualfilter + "' >> /etc/postfix/script_filter"
429425
ProcessUtilities.executioner(command)
430426

431-
## examplealias: "|/usr/bin/php -q /home/domain.com/public_html/ticket/api/pipe.php"
432-
pipealias = '%salias: "|%s"' % (sourceusername, destination)
433-
command = "echo '" + pipealias + "' >> /etc/aliases"
427+
## support unix - n n - - pipe flags=Rq user=domain argv=/usr/bin/php -q /home/domain.com/public_html/ticket/api/pipe.php
428+
## Find Unix file owner of provided pipe
429+
domainName = source.split("@")[1]
430+
website = Websites.objects.get(domain=domainName)
431+
externalApp = website.externalApp
432+
pipeowner = externalApp
433+
## Add Filter pipe to postfix /etc/postfix/master.cf
434+
filterpipe = '%spipe unix - n n - - pipe flags=Rq user=%s argv=%s -f $(sender) -- $(recipient)' % (sourceusername, pipeowner, destination)
435+
command = "echo '" + filterpipe + "' >> /etc/postfix/master.cf"
434436
ProcessUtilities.executioner(command)
435-
436-
#### Restarting Postfix and newalias
437-
438-
command = "postmap /etc/postfix/virtual"
437+
## Add Check Recipient Hash to postfix /etc/postfix/main.cf
438+
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"
439439
ProcessUtilities.executioner(command)
440440

441-
command = "systemctl restart postfix"
441+
#### Hashing filter Reloading Postfix
442+
command = "postmap /etc/postfix/script_filter"
443+
ProcessUtilities.executioner(command)
444+
command = "postfix reload"
442445
ProcessUtilities.executioner(command)
443446
##
444447

445-
command = "newaliases"
446-
ProcessUtilities.executioner(command)
448+
447449

448450
data_ret = {'status': 1, 'createStatus': 1, 'error_message': "None", 'successMessage': 'Successfully Created!'}
449451
json_data = json.dumps(data_ret)

0 commit comments

Comments
 (0)