因為敝公司近幾年來新人都用WebMail,又因為OpenWebMail只能用mailbox,因此偶爾會發生用戶mailbox爆掉的情形。
搜尋後並沒找到Postfix內建有警告功能,網路上只有Postfix Checking Maildir Disk Usage,是駱駝文寫的,我不會改 =.=
最後決定自己動手做,雖然不會大蟒蛇還是勉強寫出個小程式,用Crontab排程每天檢查一次,再自動通知用戶。
搜尋後並沒找到Postfix內建有警告功能,網路上只有Postfix Checking Maildir Disk Usage,是駱駝文寫的,我不會改 =.=
最後決定自己動手做,雖然不會大蟒蛇還是勉強寫出個小程式,用Crontab排程每天檢查一次,再自動通知用戶。
#!/usr/bin/env python
#coding: utf-8
import os
import smtplib
from email.mime.text import MIMEText
def sendWarnMail(account, name):
fromaddr="Email系統 <postmaster@example.com.tw>";
toaddrs=name +" "+ "<"+account+"@example.com.tw>";
msg = MIMEText(name +" 您好:\n\t您的email容量即使用完畢, 請將伺服器上的郵件搬移一部份至其他郵件匣,以免無法收信,謝謝。", 'plain','utf-8');
msg['Subject'] = "Email容量不足通知";
msg['From'] = fromaddr;
msg['To'] = toaddrs;
server = smtplib.SMTP('localhost');
#server.set_debuglevel(1);
server.sendmail(fromaddr, toaddrs, msg.as_string());
server.quit();
return;
def getPostfixMailBoxLimit(config):
f=open(config,'r');
limit = 0;
for line in f:
line=line.lstrip();
if line.startswith("mailbox_size_limit"):
arrs = line.split('=');
limit = int(arrs[1]);
break;
f.close()
return limit;
#主程式
postfixconfig = "/usr/local/etc/postfix/main.cf";
mailboxdir = "/var/mail";
postfixlimit = getPostfixMailBoxLimit(postfixconfig);
#設定提醒上限減100MB
sizelimit = postfixlimit-100000000;
f = open('/etc/passwd', 'r');
for line in f:
arrs = line.split(':');
if not arrs[0].startswith('#'):
mailbox = mailboxdir+"/"+arrs[0];
if os.path.exists(mailbox):
filesize = os.path.getsize(mailbox);
if(filesize > sizelimit):
sendWarnMail(arrs[0], arrs[4]);
f.close();
留言