Portál AbcLinuxu, 30. října 2025 16:03
Už opět nastala situace, že mi napsání vlastního skriptu připadalo jednodušší než hledání hotového nástroje
. Pokud se tedy někdo potřebuje podívat na stav složek na IMAPu, může použít následující skriptík.
#!/usr/bin/python
import sys
import imaplib
m = imaplib.IMAP4('SERVER')
res = m.login('USERNAME', 'PASSWORD')
if res[0] != 'OK':
sys.stderr.write("login: %s\n" % str(res))
sys.exit(1)
typ, list = m.list()
if typ != 'OK':
sys.stderr.write("list:")
sys.exit(2)
for item in list:
vals = item.split()
name = vals[2][1:][:-1]
typ, val = m.status(name, '(UNSEEN RECENT)')
if typ != 'OK':
sys.stderr.write("status:")
sys.exit(2)
print val[0]
Tiskni
Sdílej:
Ok, upřesním něco o IMAPu4.
Je specifikován RFC-2060, původní IMAP byl popsán RFC-1730.
Imap standardně "běží" na portu 143.
Klient příkazy čísluje, jelikož odpovědi mohou přicházet v libovolném pořadí.
Příkazy:
CAPABILITY - vypíše "featury" LOGIN uživatel heslo - zalogování, přejde se do autentizovaného stavu CREATE, DELETE, RENAME, LIST - pracuje se s poštovní schránkou, jméno schránky se píše v uvozovkách SUBSCRIBE, LSUB, UNSUBSCRIBE - klient tím sdělí serveru, aby označil soubor jako poštovní schránku STATUS - umožní vypsat info o schránce bez otevření této schránky SELECT a EXAMINE - otvírá poštovní schránku v r/w nebo r/o režimu COPY - kopíruje zprávy z otevřené do zvolené schránky SEARCH - umožňuje vyhledávání ve schránce FETCH - umožnňuje stahovat ze serveru zprávu STORE - umožňuje změnit atibuty položek ve schránce EXPUNGE - umožní smazat označené zprávy CLOSE - uzavře poštovní schránku a přejde do režimu "autentizovaný stav"(Ne, že si to pamatuju z hlavy, ale mám odkud opisovat
)
login_cram_md5 místo login … všechno je v dokumentaci.
Dyť v imapu je právě příkaz CAPABILITY, co umožňuje vidět, co server nabízí - to to v pythonu nic takového neexistuje?
capabilities. Jinak libovolnou autentizační metodu lze udělat pomocí authenticate(), je ovšem potřeba napsat funkci, která na výzvu serveru vrátí správný auntetizační text.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.