Чистим неиспользуемые почтовые каталоги postfix
postfix работает с mysql.
в каталоге /var/mail которую он обслуживает находятся каталоги доменов:
/var/mail
domain1.ru
domain2.com
domain3.org
в этих каталогах хранятся много пользовательских каталогов, хозяева которых уже уволились или не пользуются посфиксом. Задача их вычистить. Т.е. сопоставить таблицу aliases поле address из базы postfix и структуры каталогов для домена. Вывести тех кто отсутствует в этом поле, но чей каталог присутствует в /var/mail/domainX.XXX
#!/usr/bin/env python
# -*- coding: utf8 -*-
import mysql.connector
from mysql.connector import Error
import sys,os
import subprocess
mysqlserver="192.168.0.1"
mysqldb="postfix"
mysqluserlogin="user"
mysqluserpasword="password"
"""
# задел на работу по ssh - пока не используем
def ssh_command(HOST,KEYS,COMMAND):
print("ssh %s %s %s" % (KEYS,HOST,COMMAND))
ssh = subprocess.Popen(["ssh %s" % KEYS, "%s" % HOST, COMMAND],
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
result = ssh.stdout.readlines()
if result == []:
error = ssh.stderr.readlines()
print >>sys.stderr, "ERROR: %s" % error
else:
return result
return
"""
rowmails=[]
rowdomains=[]
try:
conn = mysql.connector.connect(host=mysqlserver,
database=mysqldb,
user=mysqluserlogin,
password=mysqluserpasword)
if conn.is_connected():
print('Connected to MySQL database')
cursor = conn.cursor()
cursor.execute("SELECT address FROM alias where domain = 'domain1.ru'")
row=cursor.fetchone()
postfix работает с mysql.
в каталоге /var/mail которую он обслуживает находятся каталоги доменов:
/var/mail
domain1.ru
domain2.com
domain3.org
в этих каталогах хранятся много пользовательских каталогов, хозяева которых уже уволились или не пользуются посфиксом. Задача их вычистить. Т.е. сопоставить таблицу aliases поле address из базы postfix и структуры каталогов для домена. Вывести тех кто отсутствует в этом поле, но чей каталог присутствует в /var/mail/domainX.XXX
#!/usr/bin/env python
# -*- coding: utf8 -*-
import mysql.connector
from mysql.connector import Error
import sys,os
import subprocess
mysqlserver="192.168.0.1"
mysqldb="postfix"
mysqluserlogin="user"
mysqluserpasword="password"
"""
# задел на работу по ssh - пока не используем
def ssh_command(HOST,KEYS,COMMAND):
print("ssh %s %s %s" % (KEYS,HOST,COMMAND))
ssh = subprocess.Popen(["ssh %s" % KEYS, "%s" % HOST, COMMAND],
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
result = ssh.stdout.readlines()
if result == []:
error = ssh.stderr.readlines()
print >>sys.stderr, "ERROR: %s" % error
else:
return result
return
"""
rowmails=[]
rowdomains=[]
try:
conn = mysql.connector.connect(host=mysqlserver,
database=mysqldb,
user=mysqluserlogin,
password=mysqluserpasword)
if conn.is_connected():
print('Connected to MySQL database')
cursor = conn.cursor()
cursor.execute("SELECT address FROM alias where domain = 'domain1.ru'")
row=cursor.fetchone()
while row is not None:
rowmails.append(row[0])
row=cursor.fetchone()
except Error as e:
print(e)
finally:
conn.close()
if len(rowmails)<=0:
print("sql query returns zero rows")
sys.exit(1)
MAILDIR="/var/mail/domain1.ru/"
for f in os.listdir(MAILDIR):
if os.path.isdir(MAILDIR+f):
if f not in rowmails:
print(MAILDIR+f)
sys.exit(0)
Комментариев нет:
Отправить комментарий