mirror of
				https://github.com/optim-enterprises-bv/Mailu.git
				synced 2025-11-04 03:57:53 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python
 | 
						|
 | 
						|
import sqlite3
 | 
						|
import time
 | 
						|
import os
 | 
						|
import tempfile
 | 
						|
 | 
						|
 | 
						|
FETCHMAIL = """
 | 
						|
fetchmail -N \
 | 
						|
    --sslcertck --sslcertpath /etc/ssl/certs \
 | 
						|
    -f {}
 | 
						|
"""
 | 
						|
 | 
						|
 | 
						|
RC_LINE = """
 | 
						|
poll {host} proto {protocol} port {port}
 | 
						|
    user "{username}" password "{password}"
 | 
						|
    smtphost "smtp"
 | 
						|
    smtpname {user_email}
 | 
						|
    {options}
 | 
						|
"""
 | 
						|
 | 
						|
 | 
						|
def fetchmail(fetchmailrc):
 | 
						|
    with tempfile.NamedTemporaryFile() as handler:
 | 
						|
        handler.write(fetchmailrc.encode("utf8"))
 | 
						|
        handler.flush()
 | 
						|
        os.system(FETCHMAIL.format(handler.name))
 | 
						|
 | 
						|
 | 
						|
def run(cursor):
 | 
						|
    cursor.execute("""
 | 
						|
        SELECT user_email, protocol, host, port, tls, username, password
 | 
						|
        FROM fetch
 | 
						|
    """)
 | 
						|
    fetchmailrc = ""
 | 
						|
    for line in cursor.fetchall():
 | 
						|
        user_email, protocol, host, port, tls, username, password = line
 | 
						|
        options = "options ssl" if tls else ""
 | 
						|
        fetchmailrc += RC_LINE.format(
 | 
						|
            user_email=user_email,
 | 
						|
            protocol=protocol,
 | 
						|
            host=host,
 | 
						|
            port=port,
 | 
						|
            username=username,
 | 
						|
            password=password,
 | 
						|
            options=options
 | 
						|
        )
 | 
						|
    fetchmail(fetchmailrc)
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    db_path = os.environ.get("DB_PATH", "/data/freeposte.db")
 | 
						|
    connection = sqlite3.connect(db_path)
 | 
						|
    while True:
 | 
						|
        time.sleep(int(os.environ.get("FETCHMAIL_DELAY", 10)))
 | 
						|
        cursor = connection.cursor()
 | 
						|
        run(cursor)
 | 
						|
        cursor.close()
 |