Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2013-11-20 16:27:49

  Areh - Użytkownik

Areh
Użytkownik
Zarejestrowany: 2013-10-13

Postfix/Dovecot - dostęp z poziomu konsoli

Taki mały problem.
Jakich komend użyć, żeby z poziomu konsoli (zdalnie) dostać się do kont pocztowych na serwerze Postfix, ale bez potrzeby wklepywania haseł do tych kont, czyli z uprawnieniami roota/administratora, tak żeby można było przeglądać dowolne skrzynki pocztowe? Dokładniej chodzi o to jak przeczytać pocztę, oznaczyć jako przeczytaną, skasować maila itp.

Od razu mówię że nie chodzi o podglądanie poczty pracowników/userów mojego serwera itp. Po prostu różne apki wysyłają wiadomości na różne konta i czasami potrzebny jest właśnie taki sposób dostępu.

Ostatnio edytowany przez Areh (2013-11-21 11:50:11)

Offline

 

#2  2013-11-20 16:37:56

  jurgensen - Użytkownik

jurgensen
Użytkownik
Skąd: Wrocław
Zarejestrowany: 2010-01-26

Re: Postfix/Dovecot - dostęp z poziomu konsoli

To wszystko zależy, jak masz skonfigurowanego postfixa (skrzynki jako Maildir lub Mbox). Jeśli jest to Mbox, sprawa jest mocno utrudniona (wszystko składowane jest w jednym pliku). Poniżej fragment z Wikipedii dotyczący Maildir, który powinien odpowiedzieć na drugą część Twojego pytania:

The program (process) that delivers an e-mail message writes it to a file in the tmp directory with a unique filename. The current algorithm for generating the unique filename combines the time, the host name, and a number of pseudo-random parameters to ensure uniqueness.[1]

The delivery process stores the message in the maildir by creating and writing to tmp/unique, and then moving this file to new/unique. The moving is commonly done by hard linking the file to new and then unlinking the file from tmp, but some implementations simply rename() it there. This sequence guarantees that a maildir-reading program will not see a partially written message, as MUAs never look in tmp.

When the mail user agent process finds messages in the new directory it moves them to cur (using rename() - link then unlink strategy may result in having the message duplicated) and appends an informational suffix to the filename before reading them. The information suffix consists of a colon (to separate the unique part of the filename from the actual information), a '2', a comma and various flags. The '2' specifies, loosely speaking, the version of the information that follows the comma. '2' is the only currently officially specified version, '1' being an experimental version. One can only assume that it was used while the Maildir format was under development. The specification defines flags which show whether the message has been read, deleted and so on: the initial (capital) letter of Passed, Replied, Seen, Trashed, Draft, and Flagged.[1] Dovecot uses lowercase letters to match 26 IMAP keywords,[3] which may include standardised keywords such as $MDNSent, and user defined flags.[/quote]

Offline

 

#3  2013-11-20 16:52:19

  Areh - Użytkownik

Areh
Użytkownik
Zarejestrowany: 2013-10-13

Re: Postfix/Dovecot - dostęp z poziomu konsoli

Maildir
Czyli dobre rozumiem że nie da się tego zrobić?

Offline

 

#4  2013-11-20 16:59:59

  jurgensen - Użytkownik

jurgensen
Użytkownik
Skąd: Wrocław
Zarejestrowany: 2010-01-26

Re: Postfix/Dovecot - dostęp z poziomu konsoli

Jeśli to Maildir, to nie jest to problemem. Wiadomości masz w oddzielnych plikach tekstowych (katalogi new i cur)

Offline

 

#5  2013-11-20 17:47:57

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Postfix/Dovecot - dostęp z poziomu konsoli

Postfix tylko przyjmuje i przekazuje pocztę, dalej masz serwer POP3/IMAP,
i tam jest całe zarządzanie zawartością skrzynki.
Czytanie nie jest standardowo dostępne, ale np w Dovecocie jest sporo narzędzi do sprzątania skrzynek.
Wszystko przez komendę:

Kod:

doveadm [...OPCJE....]

Ostatnio edytowany przez Jacekalex (2013-11-20 17:48:54)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#6  2013-11-20 19:01:59

  Areh - Użytkownik

Areh
Użytkownik
Zarejestrowany: 2013-10-13

Re: Postfix/Dovecot - dostęp z poziomu konsoli

Tylko że mi nie tylko o sprzątanie chodzi, ale o to co w pierwszym poście napisałem. Jeżeli nie da się z poziomu samego Postfiksa, to Dovecot też się nada. Tak naprawdę to ten serwer jeszcze nie stoi. Jest to w fazie planowania, będzie do tego pisana apka za pomocą której będzie można te rzeczy robić, tylko najpierw potrzebne są te komendy.
Powiem tak - o Dovecot i Postfix zacząłem czytać dopiero dzisiaj, nigdy wcześniej do niczego nie było mi to potrzebne i już dzisiaj dostałem "prośbę" o podanie tych komend, ale jakby to powiedzieć - w jeden dzień nie dałem rady tego ogarnąć (cóż, nikt nie pozwoli mi w pracy siedzieć 8h i tylko czytać, jest też inna robota do zrobienia), dlatego liczyłem/liczę na pomoc kogoś kto się tym zajmuje.

Offline

 

#7  2013-11-20 19:09:32

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Postfix/Dovecot - dostęp z poziomu konsoli

Możesz kombinować z jakimś konsolowym klientem poczty, gdzie np skrzypka pocztowa będzie wskazywana zmienną albo innym parametrem przy uruchomieniu.

Chyba, żeby kopie wiadomości przekierowywać do admina, w Postfixie i Qmailu są narzędzia do kopiowania  poczty.
Dla Postfixa to są funkcję *BCC - w dokumentacji Posfixa masz opis,
w Qmailu łatka tap.

Ostatnio edytowany przez Jacekalex (2013-11-21 11:58:47)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#8  2013-11-20 19:50:29

  Areh - Użytkownik

Areh
Użytkownik
Zarejestrowany: 2013-10-13

Re: Postfix/Dovecot - dostęp z poziomu konsoli

No właśnie chodzi o to że tą apkę trzeba napisać, a nie korzystać z gotowej (brzmi bez sensu, ale to będzie tylko dodatkowa funkcjonalność tego) i problem w tym, jakiego polecenia ma ona użyć żeby osiągnąć to co opisałem w pierwszym poście.

Offline

 

#9  2013-11-20 21:20:17

  jurgensen - Użytkownik

jurgensen
Użytkownik
Skąd: Wrocław
Zarejestrowany: 2010-01-26

Re: Postfix/Dovecot - dostęp z poziomu konsoli

Wszystkie informacje masz już podane. Aby przeczytać wiadomość, wystarczy otworzyć konkretny plik, jeśli chcesz oznaczyć jako przeczytaną, przenosisz z new do cur, jeśli chcesz usunąć, kasujesz plik.

Offline

 

#10  2013-11-20 22:37:06

  Areh - Użytkownik

Areh
Użytkownik
Zarejestrowany: 2013-10-13

Re: Postfix/Dovecot - dostęp z poziomu konsoli

To już coś, dzięki. Tylko że w tym rozwiązaniu muszę mieć dostęp do konsoli, zalogować się po ssh i dopiero działać. Rozumiem że nie ma możliwości zrobienia tego tak jak pisałem, czyli:

Kod:

polecenie <opcje><skrzynka> - i mamy np wylistowane wiadomości na danym koncie
polecenie <opcje><skrzynka><wiadomość><opcje> - czytamy wiadomość
polecenie <opcje><skrzynka><wiadomość><opcje> - oznaczamy jako przeczytaną itp

Tylko że programy pocztowe to potrafią, niezależnie od systemu operacyjnego, nieważne czy to komp, czy urządzenie mobilne, więc domyślam się że jakoś da radę to zrobić.

Offline

 

#11  2013-11-20 22:49:14

  jurgensen - Użytkownik

jurgensen
Użytkownik
Skąd: Wrocław
Zarejestrowany: 2010-01-26

Re: Postfix/Dovecot - dostęp z poziomu konsoli

W taki sposób też da radę po IMAPie. Nie wiem, w czym piszesz tę aplikację, ale bardzo możliwe że będziesz miał gotową bibliotekę do obsługi IMAPa. Przykładowe biblioteki:

[b]PERL:[/b]
[url]http://search.cpan.org/~djkernen/Mail-IMAPClient/IMAPClient.pod[/url]
[url]http://search.cpan.org/~jpaf/Net-IMAP-Simple-0.93/Simple.pm[/url]

[b]C++:[/b]
[url]http://www.vmime.org/[/url]

Offline

 

#12  2013-11-20 23:05:42

  Areh - Użytkownik

Areh
Użytkownik
Zarejestrowany: 2013-10-13

Re: Postfix/Dovecot - dostęp z poziomu konsoli

To nie ja (na szczęście) piszę. Od tego są programiści :D
To co robią to aplikacje webowe, tak więc głównie java.

Offline

 

#13  2013-11-20 23:15:30

  jurgensen - Użytkownik

jurgensen
Użytkownik
Skąd: Wrocław
Zarejestrowany: 2010-01-26

Re: Postfix/Dovecot - dostęp z poziomu konsoli

Czyli, jeśli stawiasz serwer, to musisz uruchomić na nim również IMAP (czyli np. wspomniany wcześniej Dovecot) a w aplikacji trzeba będzie zaimplementować obsługę tego protokołu.

Offline

 

#14  2013-11-20 23:27:22

  Areh - Użytkownik

Areh
Użytkownik
Zarejestrowany: 2013-10-13

Re: Postfix/Dovecot - dostęp z poziomu konsoli

Do tego (Dovecot) doszliśmy już na początku. Dokładnie nie wiem jak te apki wyglądają. Nie mam z nimi styczności. Dostałem plecenie znalezienia poleceń konsolowych które coś takiego umożliwią - tylko tyle i nic więcej, żadnych szczegółów. Apki stoją na serwerach linuksowych (GlassFish oraz JBoss) więc mają dostęp do basha.


-----
Wczytuję się w tą dokumentację doveadm i powiem szczerze  - czarna magia.

-----
Dobra, skleiłem coś takiego:

Wyświetlanie wszystkich wiadomości usera:

Kod:

doveadm search -u user@domena.com ALL

Tutaj inne przykłady, chyba nie muszę pisać co miałem na myśli

Kod:

doveadm search -u user@domena.com NEW 
doveadm search -u user@domena.com SAVEDON 2013-11-21
doveadm search -u user@domena.com SAVEDBEFORE 2013-11-21
doveadm search -u user@domena.com mailbox Inbox/Spam/Send subject todo

Do kasowania wiadomości:

Kod:

doveadm expunge -u user@domena.com

Oczywiście z parametrami, np. tak jak wyżej.

Czy dobrze kombinuje?
Mam tylko problem z działaniem na pojedynczej, konkretnej wiadomości, oraz z oznaczeniem wiadomości jako przeczytanej. Mógłbym tutaj prosić o pomoc?

Ostatnio edytowany przez Areh (2013-11-21 11:26:04)

Offline

 

#15  2013-11-21 11:50:08

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Postfix/Dovecot - dostęp z poziomu konsoli

A czy Roundcube przypadkiem nie stosuje uwierzytelnienia przez serwer Imap?
Pytam, bo o ile mi wiadomo, jeśli w Dovecocie mamy kilkadziesiąt rożnych form uwierzytelnienia, to chyba da się wykombinować "kapitańskie" hasło do wszystkich skrzynek.
Np PAM, to dosyć elastyczny mechanizm, a w razie czego źródełka też są pod ręką.

Albo np passdb skryptem, korzystając z mechanizmu checkpasswd.
Sznurek:
http://wiki2.dovecot.org/AuthDatabase/CheckPassword
Trzeba by wtedy na bazie oryginalnego qmailowego Checkpassword napisać własny.

Przykłady są:

Kod:

eix checkpassword --only-names
net-mail/checkpassword
net-mail/checkpassword-pam

Ostatnio edytowany przez Jacekalex (2013-11-21 12:02:40)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#16  2013-11-21 12:25:21

  Areh - Użytkownik

Areh
Użytkownik
Zarejestrowany: 2013-10-13

Re: Postfix/Dovecot - dostęp z poziomu konsoli

Na razie wolałbym skupić się na tym co napisałem w poprzednim poście. Wydaje mi się że takie rozwiązanie by wystarczyło, tylko nie wiem czy dobrze to robię.

----
Nieaktualne. Mój szef nie potrafi tłumaczyć i okazało się że o coś całkiem innego mu chodziło.
będzie to serwer Exchange, apka tak jak mówiłem, będzie miała wbudowanego takiego jakby klienta pocztowego, który będzie łączył się z serwerem userem o podwyższonych uprawnieniach i boi się że po działaniach tego usera na innych skrzynkach mogą wystąpić problemy z uprawnieniami do wiadomości na których ten user działał i chce do tego wykorzystać PROXYAUTH w celu przełączania się na właścicieli skrzynek.
Coś w tym rodzaju:

>  1 LOGIN administrator password
>  1 OK User logged in
>  2 PROXYAUTH real_user
>  2 OK Completed

I chodzi o to jaki protokół do tego wykorzystać, ale to już raczej nie pasuje do tego tematu. Założę nowy wątek.

Ostatnio edytowany przez Areh (2013-11-21 13:10:02)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.008 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00022 SET CHARSET latin2
0.00013 SET NAMES latin2
0.00064 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.145.8.2' WHERE u.id=1
0.00081 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.145.8.2', 1732863270)
0.00041 SELECT * FROM punbb_online WHERE logged<1732862970
0.00052 SELECT topic_id FROM punbb_posts WHERE id=246215
0.00011 SELECT id FROM punbb_posts WHERE topic_id=24651 ORDER BY posted
0.00037 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=24651 AND t.moved_to IS NULL
0.00022 SELECT search_for, replace_with FROM punbb_censoring
0.00083 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=24651 ORDER BY p.id LIMIT 0,25
0.00111 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=24651
Total query time: 0.00537 s