Benjamin Renard commited on 2012-04-19 10:15:37
Showing 2 changed files, with 32 additions and 1 deletions.
| ... | ... |
@@ -9,6 +9,7 @@ import MantisSMTPServer |
| 9 | 9 |
import logging |
| 10 | 10 |
from optparse import OptionParser |
| 11 | 11 |
import simplejson as json |
| 12 |
+import os |
|
| 12 | 13 |
|
| 13 | 14 |
parser = OptionParser() |
| 14 | 15 |
|
| ... | ... |
@@ -63,6 +64,15 @@ parser.add_option('-p',
|
| 63 | 64 |
help="The bind port", |
| 64 | 65 |
default=1025) |
| 65 | 66 |
|
| 67 |
+parser.add_option('-s',
|
|
| 68 |
+ '--save', |
|
| 69 |
+ action="store", |
|
| 70 |
+ type="string", |
|
| 71 |
+ dest="save_dir", |
|
| 72 |
+ help="Save all message receive in this directory", |
|
| 73 |
+ default=None) |
|
| 74 |
+ |
|
| 75 |
+ |
|
| 66 | 76 |
(options, args) = parser.parse_args() |
| 67 | 77 |
|
| 68 | 78 |
|
| ... | ... |
@@ -100,7 +110,7 @@ if options.configfile: |
| 100 | 110 |
sys.exit(2) |
| 101 | 111 |
|
| 102 | 112 |
try: |
| 103 |
- for param in ['mail_from','ws_url','ws_user','ws_pwd','ws_default_category']: |
|
| 113 |
+ for param in ['mail_from','ws_url','ws_user','ws_pwd','ws_default_category','save_dir']: |
|
| 104 | 114 |
if param in config: |
| 105 | 115 |
server.set_option(param,config[param]) |
| 106 | 116 |
|
| ... | ... |
@@ -119,6 +129,13 @@ if options.configfile: |
| 119 | 129 |
else: |
| 120 | 130 |
logging.warning('No config file supply. Running with default configuration...')
|
| 121 | 131 |
|
| 132 |
+if options.save_dir: |
|
| 133 |
+ if os.path.isdir(options.save_dir): |
|
| 134 |
+ server.set_option('save_dir',options.save_dir)
|
|
| 135 |
+ else: |
|
| 136 |
+ logging.error("Incorrect directory path : %s" % options.save_dir)
|
|
| 137 |
+ sys.exit(4) |
|
| 138 |
+ |
|
| 122 | 139 |
try: |
| 123 | 140 |
if options.daemon: |
| 124 | 141 |
server.startDaemon(options.pidfile) |
| ... | ... |
@@ -9,6 +9,7 @@ import MantisWS |
| 9 | 9 |
import asyncore |
| 10 | 10 |
import os |
| 11 | 11 |
import signal |
| 12 |
+import time |
|
| 12 | 13 |
|
| 13 | 14 |
class MantisSMTPServer(smtpd.SMTPServer): |
| 14 | 15 |
|
| ... | ... |
@@ -22,6 +23,7 @@ class MantisSMTPServer(smtpd.SMTPServer): |
| 22 | 23 |
_options['ws_user']='mantis' |
| 23 | 24 |
_options['ws_pwd']='password' |
| 24 | 25 |
_options['ws_default_category']='other' |
| 26 |
+ _options['save_dir']=None |
|
| 25 | 27 |
|
| 26 | 28 |
ws=None |
| 27 | 29 |
|
| ... | ... |
@@ -62,6 +64,7 @@ class MantisSMTPServer(smtpd.SMTPServer): |
| 62 | 64 |
def process_message(self, peer, mailfrom, rcpttos, data): |
| 63 | 65 |
|
| 64 | 66 |
logging.info('Message receive from %s, send by %s to %s' % (peer,mailfrom,rcpttos))
|
| 67 |
+ self.save_msg(peer, mailfrom, rcpttos, data) |
|
| 65 | 68 |
|
| 66 | 69 |
try: |
| 67 | 70 |
msg = MantisMail.MantisMail(mailfrom,rcpttos,data) |
| ... | ... |
@@ -163,3 +166,14 @@ class MantisSMTPServer(smtpd.SMTPServer): |
| 163 | 166 |
return issue_id |
| 164 | 167 |
else: |
| 165 | 168 |
logging.error('Error during add issue')
|
| 169 |
+ |
|
| 170 |
+ def save_msg(self,peer, mailfrom, rcpttos, data): |
|
| 171 |
+ if self._options['save_dir']: |
|
| 172 |
+ f="%s/%s" % (self._options['save_dir'],"%s-%s--%s--%s.msg" % (time.time(), peer[0],mailfrom,rcpttos[0])) |
|
| 173 |
+ try: |
|
| 174 |
+ logging.info('Save mail data into %s' % f)
|
|
| 175 |
+ fd=open(f,'w') |
|
| 176 |
+ fd.write(data) |
|
| 177 |
+ fd.close() |
|
| 178 |
+ except Exception, e: |
|
| 179 |
+ logging.error("Can't save message from %s to % receive from %s into %s : %s" % (mailfrom,rcpttos,peer,f,e))
|
|
| 166 | 180 |