GNU General Public License for more details.
'''
import logging
-import argparse
+import argparse, getpass
from mail_iterator import MailIterator
from file_iterator import FileIterator
from warnings_handler import WarningsHandler
# logging settings
-LOG_FILENAME = "restore_mail_inject.log"
+LOG_FILENAME = "imap_restore_mail.log"
LOG_FILE_LEVEL = logging.DEBUG
LOG_SHELL_LEVEL = logging.INFO
LOG_UNCLEAN_EXIT_LEVEL = logging.WARNING
args.user, args.folder, args.srcdir)
# connect to unix socket or server
- if(args.unix_socket_disabled):
- session = MailIterator(args.user)
- else:
- session = MailIterator(args.user)
- #session = MailIterator("/var/imap/socket/imap", "cyrus", "geheim")
+ psw = getpass.getpass()
+ session = MailIterator(args.user, psw)
storage = FileIterator()
# retrieve mailbox list from the mailbox list file
# parse arguments
parser = argparse.ArgumentParser(description="Tool to inject mails via IMAP.")
+ parser.add_argument('-s', '--sourcedir', dest='srcdir', action='store',
+ required=True, help='folder to read mail from')
parser.add_argument('-u', '--username', dest='user', action='store',
required=True, help='user to store mails to')
+ parser.add_argument('-o', '--ouser', dest='ouser', action='store',
+ default="", help='name of the original user (=username if not specified)')
parser.add_argument('-f', '--foldername', dest='folder', action='store',
default="INBOX", help='folder to store mails to - if not specified we overwrite INBOX')
- parser.add_argument('-s', '--sourcedir', dest='srcdir', action='store',
- required=True, help='folder to read mail from')
parser.add_argument('-m', '--mboxlistfile', dest='mboxlistfile', action='store',
default="", help='mboxlist file (flat file format) to read the ACLs from')
- parser.add_argument('-o', '--ouser', dest='ouser', action='store',
- default="", help='name of the original user (=username if not specified)')
parser.add_argument('-a', '--append', dest='append', action='store_true',
default=False, help="append mails, don't delete anything")
- parser.add_argument('-n', '--normal', dest='unix_socket_disabled', action='store_true',
- default=False, help='disable unix socket usage for the IMAP connection')
args = parser.parse_args()
if (args.folder != "INBOX"):
UIDVAL_RESP = re.compile(r'(?P<name>.*) \(UIDVALIDITY (?P<uidval>.*)\)')
ACLS_RESP = re.compile(b'(?P<user>.*) (?P<acls>.*)')
+SERVER = "localhost"
+
class MailIterator:
"""This class communicates with the e-mail server."""
# logged in status
logged_in = None
- def __init__(self, username, server = "intranator.m.i2n"):
+ def __init__(self, username, password):
"""Creates a connection and a user session."""
# connect to server
try:
- self.mail_con = imaplib.IMAP4(server)
- # MODIFIED
- imap_socket = socket.socket(socket.AF_UNIX)
- imap_socket.connect("/var/imap/socket/imap")
- self.mail_con.sock = imap_socket
- self.mail_con.file = self.mail_con.sock.makefile('rb')
- logging.info("Connected to mail server %s", server)
+ self.mail_con = imaplib.IMAP4(SERVER)
+
+ # socket functionality (currently unavailable)
+ #imap_socket = socket.socket(socket.AF_UNIX)
+ #imap_socket.connect("/var/imap/socket/imap")
+ #self.mail_con.sock = imap_socket
+ #self.mail_con.file = self.mail_con.sock.makefile('rb')
+
+ logging.info("Connected to %s", SERVER)
except (socket.error, self.mail_con.error) as ex:
logging.error("Could not connect to host: %s", ex)
sys.exit()
# log in
try:
- self.mail_con.login("cyrus", "geheim")
- self.logged_in = True
+
+ # proxy authentication
+ #self.mail_con.login("cyrus", "geheim")
#self.mail_con.proxyauth(username)
+
+ self.mail_con.login(username, password)
+ self.logged_in = True
logging.info("Logged in as %s.", username)
except self.mail_con.error as ex:
self.logged_in = False