Да ладно, благое дело делают.
У нас просто из конторы дофига инфы уплывало, как они грят.
Хотя хз. В общем дело сделано :) и я этому рад.
-------- Исходное сообщение --------
От: Nazarkin Andrew <CGatePro@mx.ru>
Обратный адрес: CommuniGate Pro Russian Discussions <CGatePro@mx.ru>
Кому: CommuniGate Pro Russian Discussions <CGatePro@mx.ru>
Тема: Re: [CGP] [Solved] Разрешение на отправку почты в зависимости от
списка
Дата: Thu, 04 Dec 2008 13:13:00 +0300
Почтовый клиент: CommuniGate Pro MAPI Connector 1.52.5.1/1.52.5.2
Поздравляю! :)
А долбодятлов безопасников надо с сачками было поставить на шлюзе, чтобы ловили письма сами :)
Насоздают проблем, а ты выкручивайся :)
Назаркин Андрей Николаевич
MRG LIFE. Deputy Head of IT
Mezhregiongarant. Head of IT
email: su@mrglife.ru, su@mrggroup.ru
work tel: (495) 649-3010 #2205
mob. tel: (916) 814-3459
fax: (495) 649-3277 sip: 3377615
-----Original Message-----
From: CommuniGate Pro Russian Discussions [mailto:CGatePro@mx.ru]
Sent: Thursday, December 04, 2008 12:18 PM
To: CommuniGate Pro Russian Discussions
Subject: [CGP] [Solved] Разрешение на отправку почты в зависимости от списка
Решил таки свою задачу, и публикую на всякий случай.
Дано: коммунигейт, пачка юзеров.
Есть указание сделать возможной отправку почту за пределы своего домена
только для указанных лиц.
Решил написав хелпер на питоне.
Код внизу.
в файле whitelist живет список адресов вида user@domain.com
для фильтрации сотворено правило, гласящее, что хелпер применяется для
писем из нашего домена в не наш :)
Ну и на всякий случай такие исходящие письма копируются в нужную
папочку :)
Comments welcome ;)
код:
#!/usr/bin/python
# -*- coding: utf8 -*-
import sys,string,time,shutil
whitelist='/var/CommuniGate/mailfilter/whitelist'
logfile='/opt/CommuniGate/test/pylog.log'
FILE = open(logfile,"w")
FILE.write('starting..\n')
def checksender(sendermail):
f = open(whitelist,"r")
try:
for line in f: if sendermail.lower()==line.strip(): return 1 finally: f.close()
def getsenderaddress(filename):
#got msg.file
msgfile = open(filename,"r")
while 1:
t=msgfile.readline() if t=='': return 0 tlist=t.split(); if (tlist[0]=='P') and (tlist[1]=='I'): returntlist[7].strip('<>')
msgfile.close()
return 0
while 1:
t=sys.stdin.readline()
plist=t.split()
FILE.write(t)
FILE.flush()
if plist[1]=='INTF':
time.sleep(1) sys.stdout.write(plist[0]+' INTF 2\n') sys.stdout.flush() if plist[1]=='FILE': shutil.copyfile(plist[2], '/opt/CommuniGate/test/archive/'+plist[0]) # print plist[0]+' OK' if checksender(getsenderaddress(plist[2]))==1: print plist[0]+' OK' else: print plist[0]+ ' ERROR Вы_не_можете_отправлять_почту_за_пределы_домена' sys.stdout.flush() if plist[1]=='QUIT': print plist[0]+' OK' sys.stdout.flush() sys.exit(0)
# print (getsenderaddress('./archive/1.msg')) FILE.close() Получено Thu Dec 04 12:56:12 2008
Этот архив был сгенерирован hypermail 2.1.8 : Thu 04 Dec 2008 - 16:14:20 MSK