Титла: Pop3 и Web Mail
Публикувано от: alabal в Feb 22, 2005, 11:57
Братя и ТБС! Реших да си настроя Pop3 и smtp на gmail под Thunderbird. Никакви проблеми - спазих всички изисквания на gmail и тръгна, но прави някакви грешки - показва ми, че трябва да изтегли 100 писма, а имам 39 включително и тези в trash. Ако някой знае защо е така нека драсне някои ред. Разбира се, опита не спря до тук - реших да настроя и другите си пощи за Thunderbird ето и малко опит с тях: 1. mail.bg - имат pop3 сървър, който е безплатен, но никой не казва как да се настрои - искат sms с цена за 2 лв., за пуснат smtp за 3 месеца, сигурно там описват как да се настрои и pop3. Не знам - аз експериментирах - адреса на сървъра е pop3.mail.bg, но в настройките трябва да се запише целия акаунт - напр. alabal@mail.bg. Веселото е, че ако имате smtp сървъра на gmail или който и да е друг - нямате нужда от платения. (btw бях силно впечатлен, когато ми поискаха ЕГН за регистрация на мейла там). 2. abv.bg - всички опити пропаднаха безнадеждно - pop.abv.bg, pop3.abv.bg, mail.abv.bg не реагират - приемат паролата, но не връщат никакъв резултат. Възможно ли е да се настрои - някой има ли опит с това - възможно ли е, не е ли? 3. freepopsd - инсталирах я, стартирах демона и настроих акаунта в Thunderbird на incoming server:localhost, port 2000, но ми даде грешка с abv. Някой пробвал ли го е с поща в hotmail. Ако някои има опит и му се пише, нека го сподели.
Титла: Pop3 и Web Mail
Публикувано от: Hapkoc в Feb 22, 2005, 12:18
Това за mail.bg ме разцепи - как не съм се сетил да пробвам преди. :-D
Сега обаче въпроса е дали може да се импортнат и директориите от мейла там... понеже само Inbox-а ми дърпа така...
Титла: Pop3 и Web Mail
Публикувано от: в Feb 22, 2005, 12:22
за mail.bg pop3 serever <=> stor1.mail.bg (резултат от traceroute mail.mail.bg). имат някакво ограничение за 15 минутни проверки, поради което интервала на проверка на пощата там ще трябва да е по-голям от 15 минути. и писмата идват бавно -- в събота чаках цял ден тестовете да дойдат от там, но те дойдоха чак в неделя. твоето откритие за pop3.mail.bg ме изненадва (дано да е приятно). --- за abv.bg -- ще опитам довечера, защото живо ме интересува да имам pop3 достъп до два акаунта там. web клиента им не иска да работи с включена защитна стена под windows. --- за smtp сървъра на gmail -- така е, няма проблем да го използваш него, но дали това не е целта на силите, стоящи зад google в момента? --- freepopsd -- не съм го ползвал и ще съм радостен да прочета нещо повече за това, което питаш (така, де -- успя да ме заинтригуваш).
Титла: Pop3 и Web Mail
Публикувано от: astronom в Feb 22, 2005, 13:25
Значи за abv.bg достъпа до pop3 се плаща, но според мен не си заслужава, защото няма подръжка и за imap сървър. За gmail не знаех, че поддържа pop3 и imap. Довечера ще пробвам :-).
Титла: Pop3 и Web Mail
Публикувано от: fierce в Feb 22, 2005, 14:23
При работата си с gmail под Thunderbird нямам проблемите на alabal, но имам друго странно явление Изпращам си мейл посредством Thunderbird и всичко е ок, но когато си тегля пощата получавам изпратеното мейлче като нова поща
Титла: Pop3 и Web Mail
Публикувано от: alabal в Feb 22, 2005, 14:28
Такааа! Похвала за екипа на mail.bg Получих много компетентен и добър отговор на моето писмо, което им писах относно pop3. Браво! Единственото досадно нещо е този 15 минутен период, но се преживява. @astronom къде пише, че pop3 на abv е платен и колко се плаща - аз не можах да намеря подобна информация. Относно freepops - програмката е желязна - това е демон, който може да бъде зареждан по време на boot или по желание на потребителя и дава възможност да се настрои всеки клиент (аз използвам Thunderbird) за hotmail, yahoo и няколко други пощи. Тествах я с hotmail и yahoo работи като пушка!!!! Има ли някой под виндовс, който може да тества freepops с Thunderbird и hotmail и yahoo. Това е голямо облекчение да знаеш, че не се налага да използваш онзи опасен клиент наречен Outlook. Има и едно предизвикателство - да се напише модул за freepops който да отваря abv.bg - нобходим е специален модул за целта и мисля че няма да отнеме много време на някой experienced. Ето и адреса: http://www.freepops.org/en/@fierce при мен тегли писмата от gmail на почивки - скоро мога и да ги изтегля. А е логично, според мен, да ги получаваш изпратените писма, поради самата организация на gmail - прикрепя отговора към писмото. Но може и да бъркам.
Титла: Pop3 и Web Mail
Публикувано от: Regia в Feb 22, 2005, 15:06
Ще се заема с такъв модул. Да видим какво ще излезе.
Имам пробен модул, но дава UNKNOWN ERROR. Ако някой иска, ще му го изпратя.
Титла: Pop3 и Web Mail
Публикувано от: alabal в Feb 22, 2005, 16:24
Супер, братко!!!!! Чакам го на мейла - тук във форума - ще го тествам веднага, надявам се да мога да дам някоя идея, въпреки че съм полу-грамотен в програмирането.
Титла: Pop3 и Web Mail
Публикувано от: astronom в Feb 22, 2005, 18:53
Цитат | @astronom къде пише, че pop3 на abv е платен и колко се плаща - аз не можах да намеря подобна информация. |
Ето тук АБВ Въпроси & Проблеми.
Цитат | Забележка: За да се възползвате от POP3 и SMTP достъп от Вашата поща АБВ, е необходимо да сте активирали един от пакетите с допълнителни услуги АБВ+. |
Аз лично съм бил абонат, но вече така или иначе не ползвам тази поща. Ако си успял да им ползваш сървърите без абонамент браво ;-)
Титла: Pop3 и Web Mail
Публикувано от: alabal в Feb 22, 2005, 19:01
Благодарско, astronom. Не не съм ползвал тези сървъри, а така като им гледам цените сами ще си ги ползват.
Титла: Pop3 и Web Mail
Публикувано от: kennedy в Feb 22, 2005, 20:19
аз пък си плащам всяка година по 20 лв за поща в дир.бг и нямам оплаквания. това са 1.67 лв на месец .....
Титла: Pop3 и Web Mail
Публикувано от: в Feb 22, 2005, 20:24
Цитат (astronom @ Фев. 22 2005,14:25) | Значи за abv.bg достъпа до pop3 се плаща, но според мен не си заслужава, защото няма подръжка и за imap сървър. За gmail не знаех, че поддържа pop3 и imap. Довечера ще пробвам :-). |
начина на конфигуриране на gmail за pop3 и imap го има подробно описан на самия сайт. не е някакъв проблем да го направиш.
Титла: Pop3 и Web Mail
Публикувано от: alabal в Feb 25, 2005, 02:23
Тъъъъййй!
Значи експериментирах с Thunderbird и FreePOPs и под виндовс - и там работи без проблеми Само не ме питайте как го подкарах - нямам идея - щраках по някакви копчета и виках "ok", "ok" ужасен experience. Няма конзола, бърчих нос, но какво да се прави.
Само този 15 минутен период на mail.bg дразни много. Ако някой има желание да им драсне един-два реда и да им каже, че има и други начини да си повишат сигурността - аз го направих, хората от поддръжката ми отговориха културно (чудесен отговор - не се шегувам) и естествено ми казаха, че не зависи от тях. Та си мисля, че ако имат няколко подобни писма сигурно ще могат да направят нещо.
Титла: Pop3 и Web Mail
Публикувано от: the_real_maniac в Feb 25, 2005, 14:44
1.mail.bg - не знам как стоят нещата. 2.abv.bg - плаща се за pop3. 3.не знам какво е това / по-късно сигурно ще потърся да видя 0. gmail - ами всичко си е описано на gmail.com аз лично нямам никакви проблеми с Thunderbird (вер.(ако има значение) 1.0 20050116 Дебиан ). Успех с пощите .!
Титла: Pop3 и Web Mail
Публикувано от: dilyan в Feb 25, 2005, 17:12
mail.bg казаха, че това им е официалната политика - без пари -> толкова място и 15 минути! - със sms повече място в пощата и без ограничение на времето за дърпане с pop3. Това е! Все пак няма напълно безпларен обяд, нали?
Титла: Pop3 и Web Mail
Публикувано от: alabal в Feb 25, 2005, 17:21
Айде да не говорим за обяди и ограничени ресурси (scarce resources), а също и за крайния икономически либерализъм, че се изприщвам. Понякога ме наляга срам за това, че някои старши мои колеги са измислили подобни глупости, като фразата за безплатните обяди. Google могат, mail.bg не могат. Живи и здрави! На мен нищо не ми казаха за тази политика.
Титла: Pop3 и Web Mail
Публикувано от: DoctorA в Mar 02, 2005, 19:46
Цитат | Има и едно предизвикателство - да се напише модул за freepops който да отваря abv.bg - нобходим е специален модул за целта и мисля че няма да отнеме много време на някой experienced. |
не е толкова сложно че да търсим някой experienced
Примерен код | doctora@DoctorA:/usr/share/freepops/lua$ cat abv.lua -- ************************************************************************** -- -- FreePOPs @abv.bg webmail interface -- -- Released under the GNU/GPL license -- Written by Georgi Saev <georgi_saev@abv.bg> -- ************************************************************************** --
-- Globals -- PLUGIN_VERSION = "0.1b" PLUGIN_NAME = "abv.bg" PLUGIN_LICENSE = "GNU/GPL" PLUGIN_DOMAINS = {"@abv.bg","@gyuvetch.bg","@gbg.bg"} -- -------------------------------------------------------------------------- -- foo_globals= {
username="nothing", hostname="nothing", password="nothing", session_id="nothing", browser="nothing", stat_done=false } -- -------------------------------------------------------------------------- -- function init(pstate) freepops.export(pop3server) log.dbg("FreePOPs plugin '".. PLUGIN_NAME.."' version '"..PLUGIN_VERSION.."' started!\n")
-- the serialization module if freepops.dofile("serialize.lua") == nil then return POPSERVER_ERR_UNKNOWN end -- the browser module if freepops.dofile("browser.lua") == nil then return POPSERVER_ERR_UNKNOWN end -- the common module if freepops.dofile("common.lua") == nil then return POPSERVER_ERR_UNKNOWN end -- checks on globals freepops.set_sanity_checks() return POPSERVER_ERR_OK end --
-- -------------------------------------------------------------------------- -- -- Must save the mailbox name
function user(pstate,username1) local at = string.find(username1, "@") local username = string.sub(username1,0,at-1) local hostname = string.sub(username1,at+1) foo_globals.username = username foo_globals.hostname = hostname print("*** the user wants to login as "..foo_globals.username.."@"..foo_globals.hostname.."'") return POPSERVER_ERR_OK end -- -------------------------------------------------------------------------- -- -- Must login
function pass(pstate,password) foo_globals.password = password -- create a new browser local b = browser.new() -- store the browser object in globals foo_globals.browser = b -- create the data to post local post_data = string.format("username=%s&password=%s&hostname=%s",foo_globals.username,foo_globals.password,foo_globals.hostname) -- the uri to post to local post_uri = "http://mail08.abv.bg/app/servlet/bg.abv.mail.Login" -- post it local file,err = nil, nil file,err = b:post_uri(post_uri,post_data) -- search the session ID local _,_,id = string.find(file,"jsessionid=(%w+)") if id == nil then print("*** exiting") return POPSERVER_ERR_AUTH end foo_globals.session_id = id print("*** the user has logged in as "..foo_globals.username.."@"..foo_globals.hostname.."")
return POPSERVER_ERR_OK end
-- -------------------------------------------------------------------------- -- -- Fill the number of messages and their size
function stat(pstate) if foo_globals.stat_done == true then return POPSERVER_ERR_OK end local file,err = nil, nil local b = foo_globals.browser local session_id = foo_globals.session_id file,err = b:get_uri("http://mail08.abv.bg/app/j/box.jsp;jsessionid="..session_id.."?fid=10") local e = ".*<tr>.*<td>.*<input>.*</td>.*<td>.*<img>.*</td>.*<td>[.*]{img}.*</td>.*<td>[.*]{img}.*</td>.*<td>[.*]{img}.*</td>.*<td>.*<a>.*</a>.*</td>.*<td>[.*]{a}[.*]{/a}.*</td>.*<td>.*</td>.*<td>.*</td>.*</tr>" local g = "O<O>O<O>O<X>O<O>O<O>O<O>O<O>O<O>[O]{O}O<O>O<O>[O]{O}O<O>O<O>[O]{O}O<O>O<O>O<O>O<O>O<O>O<O>[O]{O}[O]{O}O<O>O<O>O<O>O<O>X<O>O<O>" local x = mlex.match(file,e,g) --debug print x:print() set_popstate_nummesg(pstate,x:count()) for i=1,x:count() do local _,_,size = string.find(x:get(1,i-1),"(%d+)") local _,_,size_mult_k = string.find(x:get(1,i-1),"([Kk][Bb])") local _,_,size_mult_m = string.find(x:get(1,i-1),"([Mm][Bb])") local _,_,uidl = string.find(x:get(0,i-1),"value=\"(%d+)\"") if size_mult_k ~= nil then size = size * 1024 end if size_mult_m ~= nil then size = size * 1024 * 1024 end set_mailmessage_size(pstate,i,size) set_mailmessage_uidl(pstate,i,uidl) end foo_globals.stat_done = true return POPSERVER_ERR_OK end -- -------------------------------------------------------------------------- -- -- Fill msg uidl field function uidl(pstate,msg) return common.uidl(pstate,msg) end -- -------------------------------------------------------------------------- -- -- Fill all messages uidl field function uidl_all(pstate) return common.uidl_all(pstate) end -- -------------------------------------------------------------------------- -- -- Fill msg size function list(pstate,msg) return common.list(pstate,msg) end -- -------------------------------------------------------------------------- -- -- Fill all messages size function list_all(pstate) return common.list_all(pstate) end -- -------------------------------------------------------------------------- -- -- Unflag each message marked for deletion function rset(pstate) return common.rset(pstate) end -- -------------------------------------------------------------------------- -- -- Mark msg for deletion function dele(pstate,msg) return common.dele(pstate,msg) end -- -------------------------------------------------------------------------- -- -- Do nothing function noop(pstate) return common.noop(pstate) end --------------------------------------------------------------------------------
-- The callback factory for retr -- function retr_cb(data) local a = stringhack.new() return function(s,len) s = a:dothack(s).."\0" popserver_callback(s,data) return len,nil end end -- -------------------------------------------------------------------------- -- -- Get message msg, must call -- popserver_callback to send the data function retr(pstate,msg,pdata) local data=pdata -- we need the stat local st = stat(pstate) if st ~= POPSERVER_ERR_OK then return st end -- the callback local cb = retr_cb(data) -- some local stuff local session_id = foo_globals.session_id local b = foo_globals.browser local uri ="http://mail08.abv.bg/app/servlet/bg.abv.mail.GetData;jsessionid="..session_id.."?fid=10&mid="..get_mailmessage_uidl(pstate,msg).."&nid=0&eid=-1&charset=Cp1251&ac=d" -- tell the browser to pipe the uri using cb local f,rc = b:pipe_uri(uri,cb) if not f then log.error_print("Asking for "..uri.."\n") log.error_print(rc.."\n") return POPSERVER_ERR_NETWORK end return POPSERVER_ERR_OK end
-- -------------------------------------------------------------------------- -- -- Must quit without updating
function quit(pstate) return POPSERVER_ERR_OK end
|
само функцията за изтриване не съм я писал,щото ме мързи П.С.: има и един бъг - понякога при stat връща +OK 0 0
Титла: Pop3 и Web Mail
Публикувано от: alabal в Mar 03, 2005, 11:28
Братко!!!!!! Когато прочетох събщението ти заподскачах от радост, но кратка бе тя! Ето какво съм направил и какви грешки ми дава: ОС - Дебиан, freepops - инсталиран от unofficial repository - обявено на страницата на freepops, mail client - Thunderbird Добавен ред в /etc/freepops/config.lua и в /usr/share/freepops/lua/config.lua: Цитат | -- abv.bg freepops.MODULES_MAP["abv.bg"] = {name="abv.lua"} |
Записах твоя файл, като abv.lua в директорията /usr/share/freepops/lua/
Thunderbird е настроен така: Server name: localhost Port 2000 User name: drundrun@abv.bg
Ето и грешките които получавам:
Цитат | # freepopsd -w freepops started with loglevel 2 on a little endian machine. Maintaining pid file "/var/run/freepopsd.pid" DBG(popserver.c, 166): [6680] ?? Ip address 0.0.0.0 real port 2000
DBG(popserver.c, 166): [6680] ?? Ip address 127.0.0.1 real port 2000
DBG(popserver.c, 166): [6680] -> +OK FreePOPs/0.0.25 pop3 server ready
DBG(popserver.c, 166): [6680] <- AUTH
DBG(popserver.c, 166): [6680] -> -ERR ONLY PASS IS SUPPORTED
ONLY PASS IS SUPPORTED DBG(popserver.c, 166): [6680] <- CAPA
DBG(popserver.c, 166): [6680] -> +OK ANSWER FOLLOW
DBG(popserver.c, 166): [6680] -> TOP USER UIDL
DBG(popserver.c, 166): [6680] -> .
DBG(popserver.c, 166): [6680] <- USER drundrun@abv.bg
LUAY: lua error message: LUAY: /usr/share/freepops/lua/abv.lua:1: `=' expected near `@'
LUAY: lua stack traceback: LUAY: [C]: __dofile: -1 (C field) LUAY: /usr/share/freepops/lua/freepops.lua: (null): 200 (Lua ) LUAY: [C]: foreach: -1 (C field) LUAY: /usr/share/freepops/lua/freepops.lua: dofile: 211 (Lua field) LUAY: /usr/share/freepops/lua/freepops.lua: load_module_for: 349 (Lua field) LUAY: /usr/share/freepops/lua/freepops.lua: (null): 536 (Lua )
LUAY: lua error message: LUAY: attempt to call a nil value
LUAY: lua stack traceback:
LUAY: lua error message: LUAY: attempt to call a nil value
LUAY: lua stack traceback:
DBG(popserver.c, 166): [6680] -> +OK PLEASE ENTER PASSWORD
DBG(popserver.c, 161): [6680] <- PASS *********
LUAY: lua error message: LUAY: attempt to call a nil value
LUAY: lua stack traceback:
DBG(popserver.c, 166): [6680] -> -ERR UNKNOWN ERROR, PLEASE FIX
UNKNOWN ERROR, PLEASE FIX
LUAY: lua error message: LUAY: attempt to call a nil value
LUAY: lua stack traceback:
DBG(threads.c, 81): thread 0 will die
|
след като се опитам да проверя пощата си. Нямам дори и идея защо не иска да приеме паролата ми, която е проверено вярна - получава се същата грешка и при още два акаунта в abv. Та къде може да е грешката - нека да открием, за да се върне радостта!
Титла: Pop3 и Web Mail
Публикувано от: alabal в Mar 03, 2005, 11:52
И тъй! Попрегледах малко и се оказа че проблемите вероятно идват от този ред: Цитат | doctora@DoctorA:/usr/share/freepops/lua$ cat abv.lua |
Дори и след като промених doctora@DoctorA с името на моя потребител и хост продължава да дава тази грешка:
Цитат | LUAY: lua error message: LUAY: /usr/share/freepops/lua/abv.lua:1: `=' expected near `@' |
Нямам идея къде го очаква това '=' .
Титла: Pop3 и Web Mail
Публикувано от: Regia в Mar 03, 2005, 12:07
doctora@DoctorA:/usr/share/freepops/lua$ cat abv.lua
Махни го това. Това е командата за показване на файла, не част от скрипта.
Титла: Pop3 и Web Mail
Публикувано от: alabal в Mar 03, 2005, 12:38
Леле колко съм разсеян!!!! Благодарско - това върна радостта!!!!
Титла: Pop3 и Web Mail
Публикувано от: alabal в Mar 03, 2005, 14:14
Мдаааа! Плъгина работи идеално само има един единствен проблем. При всяка втора проверка тегли писмата отново и отново. Този проблем май се оказва леко досаден, тъй като имам над 50 писма в едната кутия, които не бих искал да изтрия. Вероятно би трябвало да има някакъв лесен начин по който да се укаже на freepops, че писмата вече са теглени.
Btw, изпробвах го и с виндовс - и там работи перфектно - трябва само да се копира abv.lua в c:\Program Files\FreePOPs\LUA и да се добави
-- abv freepops.MODULES_MAP["abv.bg"] = {name="abv.lua"}
в c:\Program Files\FreePOPs\config.lua
Хиляди благодарности за плъгина на DoctorA. Много съм щастлив - наистина.
P.S.: Надяваме се, че скоро ще се пребори скоро с мързела, и ще напише няколко реда програмен код.
Титла: Pop3 и Web Mail
Публикувано от: DoctorA в Mar 03, 2005, 17:55
Цитат | При всяка втора проверка тегли писмата отново и отново. |
това би трябвало да може да се настрои от mail клиента , защото тои пише retr msg_n към сървъра ( аз ползвам telnet засега и съм много доволен ) колкото до мързела вече почти 17 години се боря с него и още не съм се преборил П.С.: явно има и по разсеяни от мене
Титла: Pop3 и Web Mail
Публикувано от: spawnman в Mar 03, 2005, 18:21
Привет на всички! Идеята да си проверявам web пощите с помощта на благинка от сорта на FreePOPs винаги ми е допадала, особено сега, когато се появява възможност да правя това дори и с кутията си в abv.bg. Без да губя излишно време сложих freepops-0.0.23-1 на Мандрейк 10.0 и създадох /usr/share/freepops/lua/abv.lua по образ и подобие на прототипа, даден от DoctorA. После в /etc/freepops/config.lua добавих реда: Примерен код | freepops.MODULES_MAP["abv.bg"] = {name="abv.lua"} | Последва бърза настройка на account-ите на наличните mail клиенти в системата да ползват за POP3 localhost:2000, username: imeto_mi_v_abv@abv.bg После "драснах" един service freepops start и всичко беше ОК. Обаче неще и неще да ме пусне под предлог, че ми била грешна паролата. Знам си аз паролата, настройките на mail клиентите са ми бетон, та почнах отчаяно да проверявам за следи из логовете и ето на какво се натъкнах:
Цитат | Thu Mar 3 17:59:52 2005 freepopsd: LUA_LOG-> BUG found in '@/usr/share/freepops/lua/abv.lua' at line 61. Function 'pass' sets an undefined global 'localb' This is a sanity check added by freepops.set_sanity_checks() that prevents the plugin to create new global variables. This means you must use the 'local' keyword or declare a global table (ex. plugin_state) and use it as the global state of the plugin. This avoids some hard-to-detect bugs. |
Ако някой може да помогне ще съм супер доволен, както съм супер доволен от работата на FreePOPs-а с пощата ми в yahoo.com
Титла: Pop3 и Web Mail
Публикувано от: DoctorA в Mar 03, 2005, 20:06
намери го това 'localb' и го промени на 'local b' ( без кавичките нали знаеш ) btw преписвал ли си го или си му дал copy/paste ? ( много ми е интересно как се е получило да пише 'localb' )
Титла: Pop3 и Web Mail
Публикувано от: alabal в Mar 03, 2005, 20:32
Нямам идея защо, но Тъндърбърд (или freepops) променя файла popstate за abv.bg на две проверки на пощата. Ето и какви са различните състояния (последователни) на файла: Цитат | # POP3 State File # This is a generated file! Do not edit.
*localhost drundrun@abv.bg k 442149667 1109872102 k 441600470 1109872103 k 441600594 1109872103 k 437818216 1109872105 k 437827076 1109872105 k 438297117 1109872104 k 442845848 1109872101 k 441882465 1109872103 k 437797914 1109872105 k 439720153 1109872103
# POP3 State File # This is a generated file! Do not edit.
*localhost drundrun@abv.bg k 441600470 1109872695 k 442149667 1109872694 k 437818216 1109872696 k 441600594 1109872695 k 437827076 1109872696 k 438297117 1109872695 k 442845848 1109872693 k 437797914 1109872696 k 441882465 1109872695 k 439720153 1109872695 |
След което разбира се freepops решава, че всички десет съобщения са нови и ги тегли.
Титла: Pop3 и Web Mail
Публикувано от: spawnman в Mar 03, 2005, 20:45
За DoctorA: Не съм си играл да го преписвам на ръка, а направих copy & paste... Извинявам се за глупавия въпрос, но изядения интервал ми стана очевиден едва след като видях поста ти Благодаря ти за усилието! И аз се присъединявам към надеждата на alabal за довършване на abv.lua
Титла: Pop3 и Web Mail
Публикувано от: DoctorA в Mar 03, 2005, 21:37
alabal, къде е тоя файл ? и на коя програма е ( ако не е очевадно от пътя до него ) П.С.: повторното теглене може да се дължи и на бъга с stat
Титла: Pop3 и Web Mail
Публикувано от: alabal в Mar 03, 2005, 21:37
Всъщност се оказа, че не е виновен плъгина, който променя popstate.dat , а това, че в действителност freepops не логва в abv, а отчита, че го е направило и изтрива съдържанието на popstate.dat и тегли отново съдържанието на inbox, следващия път когато действително се свърже с abv.bg. Тази грешка се появява не само когато проверките на пощата следват една след друга бързо, но и когато е оставено автоматично да си проверява - нямам идея защо е така, но определено проблема съществува при мен и под Дебиан и под виндовс. Вероятно е нещо свързано с грешни сесии или някакви особености на abv.bg и правата за достъп. Вероятно може да се използва някаква форма на проверка за това дали е логнало успешно в inbox и ако не - да не пипа popstate. При мен тоя файл се появява във всяка директория на Tunderbird - за всеки акаунт е отделен, във директориите на Mail: Цитат | ls -l /home/blue/.mozilla-thunderbird/h3hyaa9s.default/Mail total 5 drwxr-xr-x 6 blue blue 464 Feb 22 135 Local Folders drwxr-xr-x 7 blue blue 536 Feb 22 13:23 localhost drwxr-xr-x 7 blue blue 576 Feb 22 13:51 localhost-1 drwxr-xr-x 7 blue blue 576 Feb 22 140 localhost-2 drwxr-xr-x 7 blue blue 576 Feb 22 14:20 localhost-3 drwxr-xr-x 7 blue blue 576 Mar 3 21:18 localhost-4 drwxr-xr-x 7 blue blue 576 Mar 3 21:25 localhost-5 drwxr-xr-x 7 blue blue 576 Feb 22 14:28 pop.gmail-1.com drwxr-xr-x 7 blue blue 576 Feb 22 14:46 pop.gmail.com drwxr-xr-x 7 blue blue 576 Feb 22 13:23 pop3.mail.bg
|
Във всяка директория има по един popstate.dat файл, който описва колко са писмата и статуса им. Сега ще пробвам и с Evolution дали ще има същия проблем.
Титла: Pop3 и Web Mail
Публикувано от: DoctorA в Mar 03, 2005, 21:42
ще пробвам да я вградя в stat() тая проверка пък ше видим преди да го пусна тука имаше един принт за дебъгване в стат и понякога абв казваше че е изтекла сесията
Титла: Pop3 и Web Mail
Публикувано от: alabal в Mar 03, 2005, 21:55
Даааа - същата грешка и при Evolution. Само, че при него няма файлове наречени popstate.dat, но явно има подобни файлове за всеки тип клиент.
Титла: Pop3 и Web Mail
Публикувано от: DoctorA в Mar 04, 2005, 00:50
такамм оправих бъга с stat ( сега ако абв.бг каже че е изтекла сесията ти връща -ERR UNKNOWN ERROR, PLEASE FIX ), и инсталирах mozilla-thunderbird и проверих това за тегленето , оказа се, че клиента се опитва да изтрие всяко писмо след като го е изтеглил , като му кажеш да не прави така ( Edit => Account Settings => Server Settings => Leave messages on server = true ) се оправя ето и новата версия на abv.lua Примерен код | -- ************************************************************************** -- -- FreePOPs @abv.bg webmail interface -- -- Released under the GNU/GPL license -- Written by Georgi Saev <georgi_saev@abv.bg> -- ************************************************************************** --
-- Globals -- PLUGIN_VERSION = "0.1.1" PLUGIN_NAME = "abv.bg" PLUGIN_LICENSE = "GNU/GPL" PLUGIN_DOMAINS = {"@abv.bg","@gyuvetch.bg","@gbg.bg"} -- -------------------------------------------------------------------------- -- foo_globals= {
username="nothing", hostname="nothing", password="nothing", session_id="nothing", browser="nothing", stat_done=false } -- -------------------------------------------------------------------------- -- function init(pstate) freepops.export(pop3server) log.dbg("FreePOPs plugin '".. PLUGIN_NAME.."' version '"..PLUGIN_VERSION.."' started!\n")
-- the serialization module if freepops.dofile("serialize.lua") == nil then return POPSERVER_ERR_UNKNOWN end -- the browser module if freepops.dofile("browser.lua") == nil then return POPSERVER_ERR_UNKNOWN end -- the common module if freepops.dofile("common.lua") == nil then return POPSERVER_ERR_UNKNOWN end -- checks on globals freepops.set_sanity_checks() return POPSERVER_ERR_OK end -- -- -------------------------------------------------------------------------- -- -- Must save the mailbox name
function user(pstate,username1) local at = string.find(username1, "@") local username = string.sub(username1,0,at-1) local hostname = string.sub(username1,at+1) foo_globals.username = username foo_globals.hostname = hostname print("*** the user wants to login as "..foo_globals.username.."@"..foo_globals.hostname.."'") return POPSERVER_ERR_OK end -- -------------------------------------------------------------------------- -- -- Must login function pass(pstate,password) foo_globals.password = password -- create a new browser local b = browser.new() -- store the browser object in globals foo_globals.browser = b -- create the data to post local post_data = string.format("username=%s&password=%s&hostname=%s",foo_globals.username,foo_globals.password,foo_globals.hostname) -- the uri to post to local post_uri = "http://mail08.abv.bg/app/servlet/bg.abv.mail.Login" -- post it local file,err = nil, nil file,err = b:post_uri(post_uri,post_data) -- search the session ID local _,_,id = string.find(file,"jsessionid=(%w+)") if id == nil then print("*** exiting") return POPSERVER_ERR_AUTH end foo_globals.session_id = id print("*** the user has logged in as "..foo_globals.username.."@"..foo_globals.hostname.."")
return POPSERVER_ERR_OK end
-- -------------------------------------------------------------------------- -- -- Fill the number of messages and their size
function stat(pstate) if foo_globals.stat_done == true then return POPSERVER_ERR_OK end local file,err = nil, nil local b = foo_globals.browser local session_id = foo_globals.session_id file,err = b:get_uri("http://mail08.abv.bg/app/j/box.jsp;jsessionid="..session_id.."?fid=10") local _,_,id = string.find(file,"jsessionid=(%w+)") if id == nil then print("*** exiting") return POPSERVER_ERR_UNKNOWN end local e = ".*<tr>.*<td>.*<input>.*</td>.*<td>.*<img>.*</td>.*<td>[.*]{img}.*</td>.*<td>[.*]{img}.*</td>.*<td>[.*]{img}.*</td>.*<td>.*<a>.*</a>.*</td>.*<td>[.*]{a}[.*]{/a}.*</td>.*<td>.*</td>.*<td>.*</td>.*</tr>" local g = "O<O>O<O>O<X>O<O>O<O>O<O>O<O>O<O>[O]{O}O<O>O<O>[O]{O}O<O>O<O>[O]{O}O<O>O<O>O<O>O<O>O<O>O<O>[O]{O}[O]{O}O<O>O<O>O<O>O<O>X<O>O<O>" local x = mlex.match(file,e,g) --debug print x:print() set_popstate_nummesg(pstate,x:count()) for i=1,x:count() do local _,_,size = string.find(x:get(1,i-1),"(%d+)") local _,_,size_mult_k = string.find(x:get(1,i-1),"([Kk][Bb])") local _,_,size_mult_m = string.find(x:get(1,i-1),"([Mm][Bb])") local _,_,uidl = string.find(x:get(0,i-1),"value=\"(%d+)\"") if size_mult_k ~= nil then size = size * 1024 end if size_mult_m ~= nil then size = size * 1024 * 1024 end set_mailmessage_size(pstate,i,size) set_mailmessage_uidl(pstate,i,uidl) end foo_globals.stat_done = true return POPSERVER_ERR_OK end -- -------------------------------------------------------------------------- -- -- Fill msg uidl field function uidl(pstate,msg) return common.uidl(pstate,msg) end -- -------------------------------------------------------------------------- -- -- Fill all messages uidl field function uidl_all(pstate) return common.uidl_all(pstate) end -- -------------------------------------------------------------------------- -- -- Fill msg size function list(pstate,msg) return common.list(pstate,msg) end -- -------------------------------------------------------------------------- -- -- Fill all messages size function list_all(pstate) return common.list_all(pstate) end -- -------------------------------------------------------------------------- -- -- Unflag each message marked for deletion function rset(pstate) return common.rset(pstate) end -- -------------------------------------------------------------------------- -- -- Mark msg for deletion function dele(pstate,msg) return common.dele(pstate,msg) end -- -------------------------------------------------------------------------- -- -- Do nothing function noop(pstate) return common.noop(pstate) end --------------------------------------------------------------------------------
-- The callback factory for retr -- function retr_cb(data) local a = stringhack.new() return function(s,len) s = a:dothack(s).."\0" popserver_callback(s,data) return len,nil end end -- -------------------------------------------------------------------------- -- -- Get message msg, must call -- popserver_callback to send the data function retr(pstate,msg,pdata) local data=pdata -- we need the stat local st = stat(pstate) if st ~= POPSERVER_ERR_OK then return st end -- the callback local cb = retr_cb(data) -- some local stuff local session_id = foo_globals.session_id local b = foo_globals.browser local uri ="http://mail08.abv.bg/app/servlet/bg.abv.mail.GetData;jsessionid="..session_id.."?fid=10&mid="..get_mailmessage_uidl(pstate,msg).."&nid=0&eid=-1&charset=Cp1251&ac=d" -- tell the browser to pipe the uri using cb local f,rc = b:pipe_uri(uri,cb) if not f then log.error_print("Asking for "..uri.."\n") log.error_print(rc.."\n") return POPSERVER_ERR_NETWORK end return POPSERVER_ERR_OK end
-- -------------------------------------------------------------------------- -- -- Must quit without updating
function quit(pstate) return POPSERVER_ERR_OK end
|
Титла: Pop3 и Web Mail
Публикувано от: alabal в Mar 04, 2005, 13:11
Братко!!!! Работи без проблеми и Thundebird и Evolution (т.е. и freepops) разпознават грешките на сесиите. Супер! Според мен, трябва да качиш abv.lua и config.lua в раздела на сайта - Made in BG!
Що се отнася до евентуални претенции, че се преодолява pop3 сървъра на abv, те са неоснователни, тъй като това е просто програма която изпълнява автоматично напълно законни и позволени от webmail операции, които иначе бих изпълнил ръчно. Как ще я използвам и под какви клиенти ще я накарам да работи си е моя работа. Така, че хиляяяяяяяяяяяяяяди благодарности! Ела някоя сряда да пием по няколко бири!
Титла: Pop3 и Web Mail
Публикувано от: spawnman в Mar 04, 2005, 14:25
Такаааа, имам въпрос. Получавам ново писмо в abv.bg. Казвам на mail клиента си да ми провери акаунта в абв.бг за нови писма. Като резултат се получават следните два сценария: 1. Дава ми следното съобщение /не мога да разбера дали като грешка или предупреждение/: Цитат | veso@abv.bg Unspecified [Server response:*** the user wants to login as veso@abv.bg'*** the user has logged in as veso@abv.bg{'input name="mid" type="checkbox" value="443766175"','1 KB '}{'input name="mid" type="checkbox" value="433627000"','34 KB '}{'input name="mid" type="checkbox" value="432931320"','36 KB '}{'input name="mid" type="checkbox" value="428791517"','5 KB '}{'input name="mid" type="checkbox" value="426558726"','6 KB '}{'input name="mid" type="checkbox" value="419124934"','4 KB '}{'input name="mid" type="checkbox" value="418012861"','3 KB '}{'input name="mid" type="checkbox" value="414528848"','5 KB '}{'input name="mid" type="checkbox" value="408106052"','1 KB '}{'input name="mid" type="checkbox" value="401595105"','1 KB '}{'input name="mid" type="checkbox" value="401209993"','7 KB '}{'input name="mid" type="checkbox" value="395253829"','3 KB '}{'input name="mid" type="checkbox" value="358767197"','1 KB '}{'input name="mid" type="checkbox" value="348604334"','1 KB '}{'input name="mid" type="checkbox" value="34] |
След това в клиента не се визуализира новата кореспонденция...
2. Без никакви допълнителни известия ми се казва, че нямам нови писма и толкоз.
В пощата си, в abv.bg, имам направени три допълнителни папки, за да ми се сортират съобщенията още при получаването им. Но новото писмо, с което правя тестовете не е в нито една от тези три папки, а си е в "Кутия"-та. Пробите правя с обновения abv.lua, който май работи без забележки при alabal Интересно ми е дали допълнителните папки в акаунта ми в абв.бг са пречката или нещо друго.
П.П.: В /var/log/freepopsd ми се появява след всеки опит реда:Примерен код | Fri Mar 4 14:14:47 2005 freepopsd: POPSERVER-> UNKNOWN ERROR, PLEASE FIX |
Благодаря предварително!
Титла: Pop3 и Web Mail
Публикувано от: alabal в Mar 04, 2005, 16:29
Уфф, братко! Не мога да помогна за трите папки и филтрите към тях - нямам такива advanced features в моите кутии - чист мързел (DoktorA не го чу това). Тея странни съобщения показват, че freepops сравнява съобщенията на abv и тези които твоят клиент е теглил. Грешката която ти дава прилича на грешката при грешна парола - което е странно, тъй като явно влиза в кутията ти да провери писмата. Кога я получаваш тая грешка преди или след сравнението? Пробвай да си изпратиш ново писмо, спри демона: /etc/init.d/freepops stop и го пусни от конзола (може като обикновен потребител): freepopsd -w (-w - super verbose) и виж какво и кога ти пише. Успех!
Титла: Pop3 и Web Mail
Публикувано от: DoctorA в Mar 04, 2005, 17:47
@alabal, Цитат | Така, че хиляяяяяяяяяяяяяяди благодарности! Ела някоя сряда да пием по няколко бири! |
каде ? @spawnman, 1: не е нито грешка , нито предупреждение ,
Примерен код | *** the user wants to login as [EMAIL=veso@abv.bg]veso@abv.bg[/EMAIL]' |
записва в лог-а, че искаш да влезеш
Примерен код | *** the user has logged in as [EMAIL=veso@abv.bg]veso@abv.bg[/EMAIL] |
записва в лог-а, че си влезнал
Примерен код | {'input name="mid" type="checkbox" value="443766175"','1 KB '}{'input name="mid" type="checkbox" value="433627000"','34 KB '}{'input name="mid" type="checkbox" value="432931320"','36 KB '}{'input name="mid" type="checkbox" value="428791517"','5 KB '}{'input name="mid" type="checkbox" value="426558726"','6 KB '}{'input name="mid" type="checkbox" value="419124934"','4 KB '}{'input name="mid" type="checkbox" value="418012861"','3 KB '}{'input name="mid" type="checkbox" value="414528848"','5 KB '}{'input name="mid" type="checkbox" value="408106052"','1 KB '}{'input name="mid" type="checkbox" value="401595105"','1 KB '}{'input name="mid" type="checkbox" value="401209993"','7 KB '}{'input name="mid" type="checkbox" value="395253829"','3 KB '}{'input name="mid" type="checkbox" value="358767197"','1 KB '}{'input name="mid" type="checkbox" value="348604334"','1 KB '}{'input name="mid" type="checkbox" value="34} |
това е за дебъгване
какъв клиент използваш ? paste-ни тука output-а от
Примерен код | freepopsd -w |
Титла: Pop3 и Web Mail
Публикувано от: spawnman в Mar 04, 2005, 19:26
Ето какво дава при проверка с opera-7.54-20050131.5: Цитат | # freepopsd -w freepops started with loglevel 2 on a little endian machine. Maintaining pid file "/var/run/freepopsd.pid" DBG(popserver.c, 166): [3093] ?? Ip address 0.0.0.0 real port 2000
DBG(popserver.c, 166): [3093] ?? Ip address 127.0.0.1 real port 2000
DBG(popserver.c, 166): [3104] -> +OK FreePOPs/0.0.23 pop3 server ready
DBG(popserver.c, 166): [3104] <- CAPA
DBG(popserver.c, 166): [3104] -> +OK ANSWER FOLLOW
DBG(popserver.c, 166): [3104] -> TOP USER UIDL
DBG(popserver.c, 166): [3104] -> .
DBG(popserver.c, 166): [3104] <- USER veso@abv.bg
LUAY: lua error message: LUAY: /usr/share/freepops/lua/freepops.lua:363: bad argument #1 to `find' (string expected, got nil)
LUAY: lua stack traceback: LUAY: [C]: find: -1 (C field) LUAY: /usr/share/freepops/lua/freepops.lua: enough_new: 363 (Lua field) LUAY: /usr/share/freepops/lua/freepops.lua: (null): 540 (Lua )
DBG(log_lua.c, 83): (@/usr/share/freepops/lua/abv_new.lua, 27) : FreePOPs plugin 'abv.bg' version '0.1.1' started!
*** the user wants to login as veso@abv.bg' DBG(popserver.c, 166): [3104] -> +OK PLEASE ENTER PASSWORD
DBG(popserver.c, 161): [3104] <- PASS ********* *** the user has logged in as veso@abv.bg DBG(popserver.c, 166): [3104] -> +OK ACCESS ALLOWED
DBG(popserver.c, 166): [3104] <- STAT
*** exiting DBG(popserver.c, 166): [3104] -> -ERR UNKNOWN ERROR, PLEASE FIX
UNKNOWN ERROR, PLEASE FIX DBG(threads.c, 81): thread 0 will die |
Интересното е че като пусна FreePOPs-а с `freepopsd -w` понякога ми се изписва в Oper-ата "Fetching messages (1/20)...", обаче не може да изтегли писмата и спира след известно време. А друг път проверката за нови писма изобщо не открива такива... Положението с kdepim-kmail-3.2-32.1.100mdk е малко по-обнадеждаващо, тъй като там имам един успешен опит...
При последния тест с операта ми даде следното:
Цитат | # freepopsd -w freepops started with loglevel 2 on a little endian machine. Maintaining pid file "/var/run/freepopsd.pid" DBG(popserver.c, 166): [3444] ?? Ip address 0.0.0.0 real port 2000
DBG(popserver.c, 166): [3444] ?? Ip address 127.0.0.1 real port 2000
DBG(popserver.c, 166): [3455] -> +OK FreePOPs/0.0.23 pop3 server ready
DBG(popserver.c, 166): [3455] <- CAPA
DBG(popserver.c, 166): [3455] -> +OK ANSWER FOLLOW
DBG(popserver.c, 166): [3455] -> TOP USER UIDL
DBG(popserver.c, 166): [3455] -> .
DBG(popserver.c, 166): [3455] <- USER veso@abv.bg
LUAY: lua error message: LUAY: /usr/share/freepops/lua/freepops.lua:363: bad argument #1 to `find' (string expected, got nil)
LUAY: lua stack traceback: LUAY: [C]: find: -1 (C field) LUAY: /usr/share/freepops/lua/freepops.lua: enough_new: 363 (Lua field) LUAY: /usr/share/freepops/lua/freepops.lua: (null): 540 (Lua )
DBG(log_lua.c, 83): (@/usr/share/freepops/lua/abv_new.lua, 27) : FreePOPs plugin 'abv.bg' version '0.1.1' started!
*** the user wants to login as veso@abv.bg' DBG(popserver.c, 166): [3455] -> +OK PLEASE ENTER PASSWORD
DBG(popserver.c, 161): [3455] <- PASS ********* *** the user has logged in as veso@abv.bg DBG(popserver.c, 166): [3455] -> +OK ACCESS ALLOWED
DBG(popserver.c, 166): [3455] <- STAT
{'input name="mid" type="checkbox" value="443766175"','1 KB '} {'input name="mid" type="checkbox" value="433627000"','34 KB '} {'input name="mid" type="checkbox" value="432931320"','36 KB '} {'input name="mid" type="checkbox" value="428791517"','5 KB '} {'input name="mid" type="checkbox" value="426558726"','6 KB '} {'input name="mid" type="checkbox" value="419124934"','4 KB '} {'input name="mid" type="checkbox" value="418012861"','3 KB '} {'input name="mid" type="checkbox" value="414528848"','5 KB '} {'input name="mid" type="checkbox" value="408106052"','1 KB '} {'input name="mid" type="checkbox" value="401595105"','1 KB '} {'input name="mid" type="checkbox" value="401209993"','7 KB '} {'input name="mid" type="checkbox" value="395253829"','3 KB '} {'input name="mid" type="checkbox" value="358767197"','1 KB '} {'input name="mid" type="checkbox" value="348604334"','1 KB '} {'input name="mid" type="checkbox" value="347668210"','12 KB '} {'input name="mid" type="checkbox" value="339222897"','16 KB '} {'input name="mid" type="checkbox" value="332102146"','2 KB '} {'input name="mid" type="checkbox" value="331925434"','2 KB '} {'input name="mid" type="checkbox" value="331779092"','7 KB '} {'input name="mid" type="checkbox" value="313840439"','865 B '} DBG(popserver.c, 166): [3455] -> +OK 20 151393
DBG(popserver.c, 166): [3455] <- UIDL
DBG(popserver.c, 166): [3455] -> +OK ANSWER FOLLOW
DBG(popserver.c, 166): [3455] -> 1 443766175 2 433627000 3 432931320 4 428791517 5 426558726 6 419124934 7 418012861 8 414528848 9 408106052 10 401595105 11 401209993 12 395253829 13 358767197 14 348604334 15 347668210 16 339222897 17 332102146 18 331925434 19 331779092 20 313840439
DBG(popserver.c, 166): [3455] -> .
DBG(popserver.c, 166): [3455] <- RETR 1
DBG(popserver.c, 166): [3455] -> +OK ANSWER FOLLOW
DBG(popserver.c, 166): [3455] -> Received: (qmail 10796 invoked from network); 4 Mar 2005 09:33:34 -0000 Received: from web40728.mail.yahoo.com (66.218.92.66) by 0 with SMTP; 4 Mar 2005 09:33:34 -0000 Received: (qmail 99037 invoked by uid 60001); 4 Mar 2005 09:33:33 -0000 Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; b=YuKxl2fQFUGTCusAp3dYAXijKU/OGFp8hI5hfFFHsM/8VPlaW3TXvv2gahyOu0b19Ffxz5w9u9ksa1TX+AH9Xrs6nMRKWQkYbeIEDF5i8Zrr9gOKKf/B6f16aT8lcbu+1SNOHE0MzYyusOmf/xbq1Fsj6ksPDRKbmuCoE8SqlJI= ; Message-ID: <20050304093332.99035.qmail@web40728.mail.yahoo.com> Received: from [217.9.234.104] by web40728.mail.yahoo.com via HTTP; Fri, 04 Mar 2005 01:33:32 PST Date: Fri, 4 Mar 2005 01:33:32 -0800 (PST) From: Vesselin Alexandrov <alexandrov@yahoo.com> Reply-To: Subject: test To: veso@abv.bg MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii
this is a test
____ DBG(popserver.c, 166): [3455] -> .
DBG(popserver.c, 166): [3455] !! Error calling "recvstring_with_timeout timeout" (code -2 - Operation now in progress)
DBG(threads.c, 81): thread 0 will die DBG(popserver.c, 769): a network error occurred, this thread will die |
Титла: Pop3 и Web Mail
Публикувано от: DoctorA в Mar 04, 2005, 19:32
еми явно операта не се оправя с грешки
Титла: Pop3 и Web Mail
Публикувано от: spawnman в Mar 05, 2005, 17:48
Хм, дискриминацията от страна на DoctorA спряма Opera явно е сериозна Не знам на какво се дължи, но това няма значение. По-важното е, че въпросната Opera не среща затруднения при работа с FreePOPs + yahoo.lua => проблемът е в abv.lua Като оставим продукта със затворен код на страна се оказва, че и KMail не е подходящ клиент за работа с FreePOPs + abv.lua... Има ли "не-mozilla" и "не-Evolution" клиенти, които да не правят проблемна работата (без значение дали са за X || console)? П.П.: Давам си сметка, че FreePOPs && abv.lua са още в ранна детска възраст, но много ми се ще да узреят по бързата процедура
Титла: Pop3 и Web Mail
Публикувано от: DoctorA в Mar 05, 2005, 19:32
Цитат | Хм, дискриминацията от страна на DoctorA спряма Opera явно е сериозна |
не е дискриминация а мързел , иначе в момента с Opera си разглеждам форума
Цитат | ато оставим продукта със затворен код на страна се оказва, че и KMail не е подходящ клиент за работа с FreePOPs + abv.lua... Има ли "не-mozilla" и "не-Evolution" клиенти, които да не правят проблемна работата (без значение дали са за X || console)? |
любимия ми клиент е Примерен код | telnet localhost 110 |
не прави никакви проблеми
Титла: Pop3 и Web Mail
Публикувано от: sverdlov в Mar 05, 2005, 19:48
Братоци, защо въобще се тормозите с проблемни пощи, които не се знае след колко време въобще ще спрат да функционират? Предлагам ви много по-яко решение Значи, отивате на сайта на орбител - там има раздел за безплатен нет - регистрирате си акаунт за достъп през модем - след това ще ви попита дали искате вечна поща - казвате "искам бре" и си избирате какъв адрес искате и как да завършва!!!Имате избор от 20 домейна, аз лично съм си избрал @hacker.bg - много интересно звучи, и респектиращо към леймъри и тн Единственото условие да си получите pop3 smtp достъп, е да влезете поне за секунда през модем с така създания акаунт. Целта на хорицата явно е да ограничат ползването на вечната поща от хиляди потребители, и тъй като малко хора имат модеми.... Предлагам ако някой на форума има модем, като братска услуга да влиза с акаунтите на другите за да им прави вечна поща Естествено, паролите си ги правете временни преди да ги дадете на някой с модем да влезе в нета с тях, нали не искате после да ви четат пощата Успех! А - забравих - друг начин да излъжете орбител е като им се обадите и им кажете че паролата ви не действа - казвате си там данните и викате че не можете да си влезете в нета с модема - те да пробват ! Резултат - те пробават, влизат, а вие получавате поща!
Титла: Pop3 и Web Mail
Публикувано от: alabal в Mar 06, 2005, 00:09
Абе, sverdlov! Ти добре ли си?
Титла: Pop3 и Web Mail
Публикувано от: в Mar 06, 2005, 02:08
АХА Доста съм си добре даже - супер съм - имам си неограничена поща х@hacker.bg със smtp i pop3 достъп, неограничен размер на пощенската кутия и неограничен размер на прикачените файлове... Исках да споделя начина и други да придобият тез блага
Титла: Pop3 и Web Mail
Публикувано от: DoctorA в Aug 10, 2005, 08:13
ето я и дългоочакваната ( поне от alabal ) следваща версия на abv.lua Примерен код | -- ************************************************************************** -- -- FreePOPs @abv.bg webmail interface -- -- Released under the GNU/GPL license -- Written by Georgi Saev <georgi_saev@abv.bg> -- ************************************************************************** --
-- Globals -- PLUGIN_VERSION = "0.1.2" PLUGIN_NAME = "abv.bg" PLUGIN_LICENSE = "GNU/GPL" PLUGIN_DOMAINS = {"@abv.bg","@gyuvetch.bg","@gbg.bg"} -- -------------------------------------------------------------------------- -- foo_globals= {
username="nothing", hostname="nothing", password="nothing", session_id="nothing", browser="nothing", stat_done=false, stat_fixed_id="nothing" } -- -------------------------------------------------------------------------- -- function init(pstate) freepops.export(pop3server) log.dbg("FreePOPs plugin '".. PLUGIN_NAME.."' version '"..PLUGIN_VERSION.."' started!\n")
-- the serialization module if freepops.dofile("serialize.lua") == nil then return POPSERVER_ERR_UNKNOWN end -- the browser module if freepops.dofile("browser.lua") == nil then return POPSERVER_ERR_UNKNOWN end -- the common module if freepops.dofile("common.lua") == nil then return POPSERVER_ERR_UNKNOWN end -- checks on globals freepops.set_sanity_checks() return POPSERVER_ERR_OK end --
-- -------------------------------------------------------------------------- -- -- Must save the mailbox name
function user(pstate,username1) local at = string.find(username1, "@") local username = string.sub(username1,0,at-1) local hostname = string.sub(username1,at+1) foo_globals.username = username foo_globals.hostname = hostname print("*** the user wants to login as "..foo_globals.username.."@"..foo_globals.hostname.."'") return POPSERVER_ERR_OK end -- -------------------------------------------------------------------------- -- -- Must login
function pass(pstate,password) foo_globals.password = password -- create a new browser local b = browser.new() -- store the browser object in globals foo_globals.browser = b -- create the data to post local post_data = string.format("username=%s&password=%s&hostname=%s",foo_globals.username,foo_globals.password,foo_globals.hostname) -- the uri to post to local post_uri = "http://mail05.abv.bg/app/servlet/bg.abv.mail.Login" -- post it local file,err = nil, nil file,err = b:post_uri(post_uri,post_data) -- search the session ID local _,_,id = string.find(file,"jsessionid=(%w+)") if id == nil then print("*** exiting") return POPSERVER_ERR_AUTH end foo_globals.session_id = id print("*** the user has logged in as "..foo_globals.username.."@"..foo_globals.hostname.."")
return POPSERVER_ERR_OK end
-- -------------------------------------------------------------------------- -- -- Fill the number of messages and their size function fix_no_sessid(pstate) print("*** WARNING: stat can't get sessid fixing") print("*** re-loging in") pass(nil,foo_globals.password) print("*** is it ok ?") local file,err = nil, nil local b = foo_globals.browser local session_id = foo_globals.session_id -- print("*** foo_globals.session_id= "..foo_globals.session_id.."") file,err = b:get_uri("http://mail05.abv.bg/app/j/box.jsp;jsessionid="..session_id.."?fid=10") local _,_,id = string.find(file,"jsessionid=(%w+)") if id == nil then -- print("*** this is err :") -- print(err) -- print("*** this is file :") -- print(file) -- print("*** it's not ok ?") return fix_no_sessid() else print("*** fixed") return id,file end end function stat(pstate) if foo_globals.stat_done == true then return POPSERVER_ERR_OK end local file,err = nil, nil local b = foo_globals.browser local session_id = foo_globals.session_id local j=0 file,err = b:get_uri("http://mail05.abv.bg/app/j/box.jsp;jsessionid="..session_id.."?fid=10") local _,_,id = string.find(file,"jsessionid=(%w+)") local _,_,num_pages = string.find(file,"Стр. 1 от (%w+)") if num_pages == nil then num_pages=1 end if id == nil then id,file =fix_no_sessid() end
local nummesg = 0 for tmp = 1,num_pages do file,err = b:get_uri("http://mail05.abv.bg/app/j/box.jsp;jsessionid="..session_id.."?fid=10&pid="..tmp.."") local _,_,id = string.find(file,"jsessionid=(%w+)") if id == nil then id,file =fix_no_sessid() end local e = ".*<tr>.*<td>.*<input>.*</td>.*<td>.*<img>.*</td>.*<td>[.*]{img}.*</td>.*<td>[.*]{img}.*</td>.*<td>[.*]{img}.*</td>.*<td>.*<a>.*</a>.*</td>.*<td>[.*]{a}[.*]{/a}.*</td>.*<td>.*</td>.*<td>.*</td>.*</tr>" local g = "O<O>O<O>O<X>O<O>O<O>O<O>O<O>O<O>[O]{O}O<O>O<O>[O]{O}O<O>O<O>[O]{O}O<O>O<O>O<O>O<O>O<O>O<O>[O]{O}[O]{O}O<O>O<O>O<O>O<O>X<O>O<O>" local x = mlex.match(file,e,g) --debug print x:print() nummesg = nummesg + x:count()
end print("*** "..nummesg.." pisma ob6to r1") set_popstate_nummesg(pstate,nummesg)
for tmp = 1,num_pages do file,err = b:get_uri("http://mail05.abv.bg/app/j/box.jsp;jsessionid="..session_id.."?fid=10&pid="..tmp.."") local _,_,id = string.find(file,"jsessionid=(%w+)") if id == nil then id,file =fix_no_sessid() end local e = ".*<tr>.*<td>.*<input>.*</td>.*<td>.*<img>.*</td>.*<td>[.*]{img}.*</td>.*<td>[.*]{img}.*</td>.*<td>[.*]{img}.*</td>.*<td>.*<a>.*</a>.*</td>.*<td>[.*]{a}[.*]{/a}.*</td>.*<td>.*</td>.*<td>.*</td>.*</tr>" local g = "O<O>O<O>O<X>O<O>O<O>O<O>O<O>O<O>[O]{O}O<O>O<O>[O]{O}O<O>O<O>[O]{O}O<O>O<O>O<O>O<O>O<O>O<O>[O]{O}[O]{O}O<O>O<O>O<O>O<O>X<O>O<O>" local x = mlex.match(file,e,g) --debug print x:print()
print("*** Getting page "..tmp.." out of "..num_pages.."")
for i=1,x:count() do local _,_,size = string.find(x:get(1,i-1),"(%d+)") local _,_,size_mult_k = string.find(x:get(1,i-1),"([Kk][Bb])") local _,_,size_mult_m = string.find(x:get(1,i-1),"([Mm][Bb])") local _,_,uidl = string.find(x:get(0,i-1),"value=\"(%d+)\"") if size_mult_k ~= nil then size = size * 1024 end if size_mult_m ~= nil then size = size * 1024 * 1024 end j=j+1 set_mailmessage_size(pstate,j,size) set_mailmessage_uidl(pstate,j,uidl) print("*** "..i.." pisma so far") end end
print("*** "..j.." pisma") foo_globals.stat_done = true return POPSERVER_ERR_OK end -- -------------------------------------------------------------------------- -- -- Fill msg uidl field function uidl(pstate,msg) return common.uidl(pstate,msg) end -- -------------------------------------------------------------------------- -- -- Fill all messages uidl field function uidl_all(pstate) return common.uidl_all(pstate) end -- -------------------------------------------------------------------------- -- -- Fill msg size function list(pstate,msg) return common.list(pstate,msg) end -- -------------------------------------------------------------------------- -- -- Fill all messages size function list_all(pstate) return common.list_all(pstate) end -- -------------------------------------------------------------------------- -- -- Unflag each message marked for deletion function rset(pstate) return common.rset(pstate) end -- -------------------------------------------------------------------------- -- -- Mark msg for deletion function dele(pstate,msg) return common.dele(pstate,msg) end -- -------------------------------------------------------------------------- -- -- Do nothing function noop(pstate) return common.noop(pstate) end --------------------------------------------------------------------------------
-- The callback factory for retr -- function retr_cb(data) local a = stringhack.new() return function(s,len) s = a:dothack(s).."\0" popserver_callback(s,data) return len,nil end end -- -------------------------------------------------------------------------- -- -- Get message msg, must call -- popserver_callback to send the data function retr(pstate,msg,pdata) local data=pdata -- we need the stat local st = stat(pstate) if st ~= POPSERVER_ERR_OK then return st end -- the callback local cb = retr_cb(data) -- some local stuff local session_id = foo_globals.session_id local b = foo_globals.browser local uri ="http://mail05.abv.bg/app/servlet/bg.abv.mail.GetData;jsessionid="..session_id.."?fid=10&mid="..get_mailmessage_uidl(pstate,msg).."&nid=0&eid=-1&charset=Cp1251&ac=d" -- tell the browser to pipe the uri using cb local f,rc = b:pipe_uri(uri,cb) if not f then log.error_print("Asking for "..uri.."\n") log.error_print(rc.."\n") return POPSERVER_ERR_NETWORK end return POPSERVER_ERR_OK end
-- -------------------------------------------------------------------------- -- -- Must quit without updating
function quit(pstate) return POPSERVER_ERR_OK end
|
changelog - промените са само в stat : 0) когато abv.bg му каже че е изтекла сесията , влиза отново и пак дръпва страницата с пощата ( преди даваше unknown error ) , функцията е рекурсивна 1) списъка с писмата вече се взима от всички страници , а не само от първата
Титла: Pop3 и Web Mail
Публикувано от: Agent_SMITH в Aug 10, 2005, 23:36
Темата съдържа много полезни неща (и много празни приказки, ама нейсе). Ако автора на темата е съгласен, бих искал да я преместя в секция ПРОГРАМИРАНЕ. Грехота е полезни неща да стоят в "... всякакви други глупости"
Титла: Pop3 и Web Mail
Публикувано от: DoctorA в Sep 20, 2005, 15:39
ето я и новата версия има само bug fixes Примерен код | -- ************************************************************************** -- -- FreePOPs @abv.bg webmail interface -- -- Released under the GNU/GPL license -- Written by Georgi Saev <georgi_saev@abv.bg> -- ************************************************************************** --
-- Globals -- PLUGIN_VERSION = "0.1.3" PLUGIN_NAME = "abv.bg" PLUGIN_LICENSE = "GNU/GPL" PLUGIN_DOMAINS = {"@abv.bg","@gyuvetch.bg","@gbg.bg"} -- -------------------------------------------------------------------------- -- foo_globals= { debug_level = 0, username="nothing", hostname="nothing", password="nothing", session_id="nothing", browser="nothing", stat_done=false, stat_fixed_id="nothing" } -- -------------------------------------------------------------------------- -- function init(pstate) freepops.export(pop3server) log.dbg("FreePOPs plugin '".. PLUGIN_NAME.."' version '"..PLUGIN_VERSION.."' started!\n")
-- the serialization module if freepops.dofile("serialize.lua") == nil then return POPSERVER_ERR_UNKNOWN end -- the browser module if freepops.dofile("browser.lua") == nil then return POPSERVER_ERR_UNKNOWN end -- the common module if freepops.dofile("common.lua") == nil then return POPSERVER_ERR_UNKNOWN end -- checks on globals freepops.set_sanity_checks() return POPSERVER_ERR_OK end --
-- -------------------------------------------------------------------------- -- -- Must save the mailbox name
function user(pstate,username1) local at = string.find(username1, "@") local username = string.sub(username1,0,at-1) local hostname = string.sub(username1,at+1) foo_globals.username = username foo_globals.hostname = hostname if foo_globals.debug_level == 1 then print("*** the user wants to login as "..foo_globals.username.."@"..foo_globals.hostname.."'"); end
return POPSERVER_ERR_OK end -- -------------------------------------------------------------------------- -- -- Must login
function pass(pstate,password) foo_globals.password = password -- create a new browser local b = browser.new() -- store the browser object in globals foo_globals.browser = b -- create the data to post local post_data = string.format("username=%s&password=%s&hostname=%s",foo_globals.username,foo_globals.password,foo_globals.hostname) -- the uri to post to local post_uri = "http://mail05.abv.bg/app/servlet/bg.abv.mail.Login" -- post it local file,err = nil, nil file,err = b:post_uri(post_uri,post_data) -- search the session ID local _,_,id = string.find(file,"jsessionid=(%w+)") if id == nil then if foo_globals.debug_level == 1 then print("*** exiting") end return POPSERVER_ERR_AUTH end foo_globals.session_id = id if foo_globals.debug_level == 1 then print("*** the user has logged in as "..foo_globals.username.."@"..foo_globals.hostname.."") end return POPSERVER_ERR_OK end
-- -------------------------------------------------------------------------- -- -- Fill the number of messages and their size function fix_no_sessid(pstate,add_page_var) if foo_globals.debug_level == 1 then print("*** WARNING: stat can't get sessid fixing") print("*** re-loging in") end pass(nil,foo_globals.password) if foo_globals.debug_level == 1 then print("*** is it ok ?") end local file,err = nil, nil local b = foo_globals.browser local session_id = foo_globals.session_id if foo_globals.debug_level == 1 then print("*** foo_globals.session_id= "..foo_globals.session_id.."") end file,err = b:get_uri("http://mail05.abv.bg/app/j/box.jsp;jsessionid="..session_id.."?fid=10"..add_page_var.."") local _,_,id = string.find(file,"jsessionid=(%w+)") if id == nil then if foo_globals.debug_level == 1 then print("*** this is err :") print(err) -- print("*** this is file :") -- print(file) print("*** it's not ok ?") end return fix_no_sessid() else if foo_globals.debug_level == 1 then print("*** fixed") end return id,file end end function stat(pstate) if foo_globals.stat_done == true then return POPSERVER_ERR_OK end local file,err = nil, nil local b = foo_globals.browser local session_id = foo_globals.session_id local j=0 file,err = b:get_uri("http://mail05.abv.bg/app/j/box.jsp;jsessionid="..session_id.."?fid=10") local _,_,id = string.find(file,"jsessionid=(%w+)") if id == nil then id,file =fix_no_sessid() end local _,_,num_pages = string.find(file,"Стр. 1 от (%w+)") if num_pages == nil then num_pages=1 end
local nummesg = 0 for tmp = 1,num_pages do file,err = b:get_uri("http://mail05.abv.bg/app/j/box.jsp;jsessionid="..session_id.."?fid=10&pid="..tmp.."") local _,_,id = string.find(file,"jsessionid=(%w+)") if id == nil then id,file =fix_no_sessid(pstate,"&pid="..tmp.."") end local e = ".*<tr>.*<td>.*<input>.*</td>.*<td>.*<img>.*</td>.*<td>[.*]{img}.*</td>.*<td>[.*]{img}.*</td>.*<td>[.*]{img}.*</td>.*<td>.*<a>.*</a>.*</td>.*<td>[.*]{a}[.*]{/a}.*</td>.*<td>.*</td>.*<td>.*</td>.*</tr>" local g = "O<O>O<O>O<X>O<O>O<O>O<O>O<O>O<O>[O]{O}O<O>O<O>[O]{O}O<O>O<O>[O]{O}O<O>O<O>O<O>O<O>O<O>O<O>[O]{O}[O]{O}O<O>O<O>O<O>O<O>X<O>O<O>" local x = mlex.match(file,e,g) --debug print -- x:print() nummesg = nummesg + x:count()
end if foo_globals.debug_level == 1 then print("*** "..nummesg.." pisma ob6to r1") end set_popstate_nummesg(pstate,nummesg)
for tmp = 1,num_pages do file,err = b:get_uri("http://mail05.abv.bg/app/j/box.jsp;jsessionid="..session_id.."?fid=10&pid="..tmp.."") local _,_,id = string.find(file,"jsessionid=(%w+)") if id == nil then id,file =fix_no_sessid() end local e = ".*<tr>.*<td>.*<input>.*</td>.*<td>.*<img>.*</td>.*<td>[.*]{img}.*</td>.*<td>[.*]{img}.*</td>.*<td>[.*]{img}.*</td>.*<td>.*<a>.*</a>.*</td>.*<td>[.*]{a}[.*]{/a}.*</td>.*<td>.*</td>.*<td>.*</td>.*</tr>" local g = "O<O>O<O>O<X>O<O>O<O>O<O>O<O>O<O>[O]{O}O<O>O<O>[O]{O}O<O>O<O>[O]{O}O<O>O<O>O<O>O<O>O<O>O<O>[O]{O}[O]{O}O<O>O<O>O<O>O<O>X<O>O<O>" local x = mlex.match(file,e,g) --debug print -- x:print() if foo_globals.debug_level == 1 then print("*** Getting page "..tmp.." out of "..num_pages.."") end
for i=1,x:count() do local _,_,size = string.find(x:get(1,i-1),"(%d+)") local _,_,size_mult_k = string.find(x:get(1,i-1),"([Kk][Bb])") local _,_,size_mult_m = string.find(x:get(1,i-1),"([Mm][Bb])") local _,_,uidl = string.find(x:get(0,i-1),"value=\"(%d+)\"") if size_mult_k ~= nil then size = size * 1024 end if size_mult_m ~= nil then size = size * 1024 * 1024 end j=j+1 set_mailmessage_size(pstate,j,size) set_mailmessage_uidl(pstate,j,uidl) if foo_globals.debug_level == 1 then print("*** "..i.." pisma so far") end end end
if foo_globals.debug_level == 1 then print("*** "..j.." pisma") end foo_globals.stat_done = true return POPSERVER_ERR_OK end -- -------------------------------------------------------------------------- -- -- Fill msg uidl field function uidl(pstate,msg) return common.uidl(pstate,msg) end -- -------------------------------------------------------------------------- -- -- Fill all messages uidl field function uidl_all(pstate) return common.uidl_all(pstate) end -- -------------------------------------------------------------------------- -- -- Fill msg size function list(pstate,msg) return common.list(pstate,msg) end -- -------------------------------------------------------------------------- -- -- Fill all messages size function list_all(pstate) return common.list_all(pstate) end -- -------------------------------------------------------------------------- -- -- Unflag each message marked for deletion function rset(pstate) return common.rset(pstate) end -- -------------------------------------------------------------------------- -- -- Mark msg for deletion function dele(pstate,msg) return common.dele(pstate,msg) end -- -------------------------------------------------------------------------- -- -- Do nothing function noop(pstate) return common.noop(pstate) end --------------------------------------------------------------------------------
-- The callback factory for retr -- function retr_cb(data) local a = stringhack.new() return function(s,len) s = a:dothack(s).."\0" popserver_callback(s,data) return len,nil end end -- -------------------------------------------------------------------------- -- -- Get message msg, must call -- popserver_callback to send the data function retr(pstate,msg,pdata) local data=pdata -- we need the stat local st = stat(pstate) if st ~= POPSERVER_ERR_OK then return st end -- the callback local cb = retr_cb(data) -- some local stuff local session_id = foo_globals.session_id local b = foo_globals.browser local uri ="http://mail05.abv.bg/app/servlet/bg.abv.mail.GetData;jsessionid="..session_id.."?fid=10&mid="..get_mailmessage_uidl(pstate,msg).."&nid=0&eid=-1&charset=Cp1251&ac=d" -- tell the browser to pipe the uri using cb local f,rc = b:pipe_uri(uri,cb) if not f then log.error_print("Asking for "..uri.."\n") log.error_print(rc.."\n") return POPSERVER_ERR_NETWORK end return POPSERVER_ERR_OK end
-- -------------------------------------------------------------------------- -- -- Must quit without updating
function quit(pstate) return POPSERVER_ERR_OK end -- -------------------------------------------------------------------------------- -- END OF FILE -- --------------------------------------------------------------------------------
|
Титла: Pop3 и Web Mail
Публикувано от: DoctorA в Sep 21, 2005, 14:34
и pls пишете ако има bugs щото аз не го тест-вам тоя plugin и май само alabal го ползва ( или поне само той ми пише че има bugs ) колкото до предложението на Agent_SMITH Цитат | Темата съдържа много полезни неща (и много празни приказки, ама нейсе).
Ако автора на темата е съгласен, бих искал да я преместя в секция ПРОГРАМИРАНЕ. Грехота е полезни неща да стоят в "... всякакви други глупости" |
не съм автора на темата ама според мен няма да има смисал , щтото сега имам 4 дена почивка и като свърша с домашни и "всякакви други глупости" май ще ми остане време да кача plugin-а и малко инфо за него на някое free и като го кача ще го сложа в раздел MADE IN BG на сайта
Титла: Pop3 и Web Mail
Публикувано от: DoctorA в Sep 25, 2005, 23:14
|