(ha nem jó helyre raktam a témát kérlek javasoljatok, és igen, kerestem google-ön, de valószínűleg rossz kulcsszavakkal)
A megoldandó feladat:
- shell script-ből futtatható (opcionálisan se érdekel GUI, cron-os futtatás a cél)
- pop3 (vagy imap) és smtp távoli szerverekkel kapcsolódik
- új leveleket .eml fájlba letölti
- egy mappába rakott .eml fájlokat feltölti smtp-re (és kezeli a küldés sikerességét, sikeresség után shell script-et futtat, vagy másik mappába pakolja a fájlokat)
- 1 gmail-es címmel lesz használva, nem cél összetettebb profilkezelés
- jelszavakat biztonságosan kezeli (nem paraméterként kéri be futtatáskor)
(nem kell: olvasottsági visszajelzés, és egyéb eseménykezelés)
(opcionálisan: naplózik, vagy események után shell script-eket hív meg, pl. új email letöltésekor)
- - - - -
Szerk.:
- ha a letöltést és a feltöltést külön program végzi nem gond
- a feltöltés fontosabb, a letöltésre már most részben automatizálható a thunderbird
- 969 megtekintés
Hozzászólások
Az alapjan amit megertettem a feladatbol, a "feltoltes":
dir=whatever
yourmailhello=dependsonyoursettigns
yoursmtpserver=alsodependonyourenvironmentalthings
for i in ${dir}/*.eml ; do
if test -f $i.response ; then
:
else
( printf "$yourmailhello" ; cat $i ) | nc $yoursmtpserver 25 >$i.response
fi
done
- A hozzászóláshoz be kell jelentkezni
Először is köszönet a válaszért, másodsorban: nem teljesen értem a script-et amit adtál, az alábbi két sorral nem vagyok meg:
"if test -f $i.response ; then"
"( printf "$yourmailhello" ; cat $i ) | nc $yoursmtpserver 25 >$i.response"
A távoli alatt konkrétan egy gmail szervert értettem (írtam is másik pontban), tehát a levél küldése nem a script-et futtató gépről történne, hanem a gmail szerveréről, én csak a levél tartalmát küldeném nekik.
- A hozzászóláshoz be kell jelentkezni
Ezt fussuk át mégegyszer. A levélnek van feladója, meg címzettje, meg van egy SMTP-szerver, aminek odaadod, hogy továbbítsa. Pont. A levelet a fentiek szerint a scriptet futtató gép a $yoursmtpserver változóban megadott gépnek adja oda, hogy továbbítsa. Ez internet-szolgáltatótól függően lehet, hogy csak a szolgáltató smtp-szervere lehet (mert máshova 25-ös tcp portot nem nyitnak ki), céges környezetben lehet, hogy a cég belső levelezőszervere, stb. Bővebb információkért kérdezze rendszergazdáját.
- A hozzászóláshoz be kell jelentkezni
Nem mondom, hogy teljesen értem a problémát a leírás alapján. Azt látom, hogy nekiálltál egy megoldást kitalálni, de az nem világos, miért pont ez a megoldás.
Ha jól értem, letölteni akarod, továbbítani másik emailcímre, és helyi másolatot is megtartani.
Én így csinálnám:
1) letöltés - fetchmail programmal, mondjuk cron-ból időzítetten igény szerint
2) így beérkező levelek feldolgozása - procmail programmal, automatikusan indítva .forward fájlból, amikor bármi levelet letöltött a fetchmail.
procmail tovább tudja küldeni a levelet (amennyiben ezt jelenti a feltölti smtp-re fent).
Nem tudom, mit jelent a küldés sikeressége. Ha átadtad az MTA-nak és bent van a queue-ban, az már jó? Mitől lenne sikertelen?
Mindenesetre procmail meg tudja vizsgálni, hogy az előző rész sikeresen lefutott-e vagy nem.
Ezután tud scriptet indítani vagy az emailt mailbox fájlba írni (másik könyvtárban), vagy Maildir-be kézbesíteni, esetleg ezeket mindet.
Naplózni is tud.
Fogalmam sincs, mi az, hogy .eml fájl és miért akarod az új leveleket ilyen formában letölteni. Ha ez csak átmeneti tároló, akkor szerintem nincs rá igazán szükség, ezt a lépést kihagynám.
Ha nem átmeneti tároló, hanem két helyi másolatot is szeretnél, akkor én egy Maildir-be kézbesíteném az összes bejövő levelet, továbbküldés előtt.
Ha a fájlnévnek a .eml kiterjesztést is tartalmaznia kell, azt szerintem a procmail alapból nem tudja (csak egy unique fájlnevet készít általad megadott prefixszel), de semmiből nem tart utána futtatni egy kis scriptet, ami minden fájlt, aminek a neve nem .eml-re végződik átnevezi.
- A hozzászóláshoz be kell jelentkezni
Köszi a választ, azt már látom, hogy rosszul írtam meg a témanyitót, jelenleg tájékozódok, hogy mit is neveztem meg rosszul (pl. feltöltés).
Röviden: egy kliens program elkészítése a cél. Letölti a leveleket, feldolgozza, újakat is hoz létre, majd elküldi egy adott smtp-re. Egy faék egyszerűségű megoldás arra, hogy lejöjjenek a levelek (fetchmail épp vizsgálat alatt), és ettől részben függetlenül kliens program által készített email-ek kiküldése egy (gmail) smtp-n keresztül.
(A kérdés eredetileg egy proprietary és legacy (ideális) program kapcsán merült fel, ami jelenleg egy proprietary szolgáltatáson keresztül kapja az .eml fájlokat (ez van jelenleg helyettesítve tesztként egy thunderbird-el, ami exportálja a letöltött leveleket .mbox-ból .eml-be), majd szerkeszti-pakolássza a felhasználó a leveleit, és küldi az általa megírtakat, jelenleg a program kimenete szintén .eml fájl, és a kliens ezt adta át a proprietary szolgáltatásnak. Az eredeti cél a szolgáltatás kiváltása volt a kliens megtartásával együtt, de ez jelenleg ejtésre került, ez volt eredetileg az .eml formátumot adó megkötés.)
Szerk.: azt hittem van annál egyszerűbb megoldás, mint hogy egy fetchmail+procmail kaliberű telepítése és beállítása, még keresgélek, remélem nem tévedtem.
- A hozzászóláshoz be kell jelentkezni
azt hittem van annál egyszerűbb megoldás, mint hogy egy fetchmail+procmail kaliberű telepítése és beállítása, még keresgélek, remélem nem tévedtem.
Egyszerűbb? Ez mindkettő teljesen egyszerű kis programocska.
Fetchmail helyett nem tudom mi lehetne egyszerűbb. Megadod a mailboxot, letölti a leveleket. Ez pont az, ami neked kell.
Ezután a leveleket tovább akarod küldeni. Ha mindig mindent egy adott címre, akkor ez mehet a .forward fájlba.
Feldolgoznád? Mindet? Akkor ugyanígy a .forward-ba beleírod. Procmail helyett a saját scriptedet indítod el. A scripted azt csinál az emaillel, amit akar, átírja, lementi, eldobja, elküldi.
user@example.com
"|/path/sajat/script"
bejövő email továbbítására vagy új email küldésére: mail
- A hozzászóláshoz be kell jelentkezni
+1 :-)
- A hozzászóláshoz be kell jelentkezni
olyan eszközt kerestem, ami ezt egy lépéssel egyszerűbben megoldja, de a fetchmail jelenleg jónak tűnik, köszönet a segítségért!
- A hozzászóláshoz be kell jelentkezni
https://github.com/bAndie91/MIME-downloader
bár ez kimondottam a csatolmányok letöltésére szakosított, de egész raw eml-t is le tud tölteni IMAP-ról.
jelszót env-ből veszi.
feltölteni is IMAP-on tölsd fel, a SMTP-n csak küldeni lehet, aminek sok más mellékhatása lehet. szinkronizálni tisztán IMAP-on keresztül is lehet. ha már itt tartunk, megnézheted az imapsync progit.
~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni
köszönet, megnézem, jól sejtem, hogy az imapsync kezeli a letöltést is, ergo amit linkeltél az nem kell mellé? (ettől függetlenül tesztelni fogom)
- A hozzászóláshoz be kell jelentkezni
nem kell, az kettő teljesen különböző projekt
~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack
- A hozzászóláshoz be kell jelentkezni