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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam,
Chciałbym kilku systemowym użytkownikom uniemożliwić wysyłanie maili w świat przez Postfix.
Strasznie męczę się z dokumentacją Postfixa i mimo różnych prób serwer ciągle przepuszcza maila wysyłane przez nieporządanych userów.
Bardzo proszę o instrukcję jak taką prostą weryfikacją wprowadzić.
Próbuję z smtpd_recipient_restrictions, i w tej chwili mam to tak ustawione:
/etc/postfix/main.cf:
... smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/blockedsenders permit_sasl_authenticated permit_mynetworks reject_unauth_destination ..
/etc/postfix/blockedsenders:
test@mail.pakamera.com.pl reject test@pakamera.com.pl reject
Nie chcę, żeby można było wysyłać maile z adresu test@mail.pakamera.com.pl
Ale to nie działa.
Pozdrawiam
Offline
I jeszcze jedno - mam wrażenie, że pewne ograniczenia, które wprowadzam w main.cf nie obowiązują w ogóle gdy wysyłam maila z przy użyciu polecenia "mail" (a nie łącząc się z serwerem smtp po porcie 25). Ustawiłem na przykład w main.cf "reject" wszystkiego, przy próbie łączenia przez smtp mail został odrzucony, ale wysłanie z command line powiodło się. Jak to zablokować?
W ogóle nie chciałbym, żeby można było wysyłać maile przez polecenie "mail".
Offline
A ja to widzę tak - problemu nie ma.
Wystarzy rozdzielić bazy haseł dla serwera smtp (Postfixa), i serwera Pop/imap.
Wtedy bedzie można sprawdzać posztę przez pop/imap, ale wysylać przez postfixa będą mogli tylko ci użytkownicy, którzy istnieją w bazie postfixa.
I nie jest to na kilka godzin z dokumentacją, bo skrzynka pocztowa jest rozwiązaniem kompleksowym, ale skutecznym rozwiązaniem dość idiotycznego problemu.
Innym rozwiązaniem jest np spamassassin i blacklist, dzięki temu taki user dostanie np 50 punktów extra i i jego mail można zatrzymać.
Nie wiem, jak numer ze spamassassinem zalatwic w Postfixie, ale w Qmailu i qmail-sacnner sprawa jest banalna.
Pomijajac, że skoro np Qmail ma plik konfiguracyjny, gdzie można banować adresy i domeny, to Postfix pewnie też ma jakieś rozwiązanie blacklisty.
Co do filtru, który u Ciebie nie działa, przypuszczam, że Postfix nie stosuje filtra, który użyłeś, o ile wysylający przejdzie poprawnie proces autoryzacji.
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2012-04-01 10:07:47)
Offline
[quote=Jacekalex]A ja to widzę tak - problemu nie ma.
Wystarzy rozdzielić bazy ahseł dla serwera smtp (Postfixa), i serwera Pop/imap.
Wtefy bedzie można sprawszać posztę przez pop/imap, ale wysylać przez postfixa będą mogli tylko ci użytkownicy, którzy istnieją w bazie postfixa.
I nie jest to na kilka godzin z dokumentacją, bo skrzynka pocztowa jest rozwiązaniem kompleksowym, ale skutecznym rozwiązaniem dość idiotycznego problemu.
Innym rozwiązaniem jest np spamassassin i blacklist, dzięki temu taki user dostanie np 50 punktów extra i i jego mail można zatrzymać.
Nie wiem, jak numer ze spamassassinem zalatwic w Postfixie, ale w Qmailu i qmail-sacnner sprawa jest banalna.
Pomijajac, że skoro np Qmail ma plik konfiguracyjny, gdzie można banować adresy i domeny, to Postfix pewnie też ma jakieś rozwiązanie blacklisty.
Co do filtru, który u Ciebie nie działa, przypuszczam, że Postfix nie stosuje filtra, który użyleś, o ile wysylający przejdzie poprawnie proces autoryzacji.
To by było na tyle
;-)[/quote]
Ok, ale którzy to są "ci użytkownicy, którzy istnieją w bazie postfixa"?
Bo według mnie to wszyscy userzy.
Chciałbym, żeby funkcja mail w php nie wysyłała maila. Teraz wystarczy palnąć w skrypcie: mail('jakub@pakamera.com.pl', 'tttt', 'sdfsdfsdfsd'); i mail wysłany
z adres www-data@mail.pakamera.com.pl. Tak być nie może, muszę to zablokować i w żaden sposób nie mogę. Czy ktoś sobie z tym poradził?
Offline
A ci userzy jak te maile wysylają, przez interfejs www, czy przez smtp?
Bo jeśli funkcja mail, w php, a Postfix ma ustawiony adres serwera www z php jako adres, z którego przyjmuje wszystkie maile (tzw relay adres), to wtedy wszystkie filtry przepuszczą takiego maila.
Wystarczy zlikwidować adres relay, wymusić autoryzację, tylko wtedy php mail też musi przejść proces autoryzacji.
Ale żeby w skrypcie php filtrować uzytkowników, którzy mogą wysylać maile, to już trzeba załatwić w tym skrypcie.
Choć np roudcube wysyła przez smtp z uwierzytelnieniem, ale nie wiem, co tam masz za skrypt php, że taki straszny z tym problem.
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2012-04-01 10:08:34)
Offline
[quote=Jacekalex]A ci userzy jak te maile wysylają, przez interfejs www, czy przez smtp?
Bo jeśli funkcja mail, w php, a Postfix ma ustawiony adres serwera www z php jako adres, zktórego przyjmuje wszystkie maile (tzw relay adres), to wtedy wszystkie filtry przepuszczą takiego maila.
Wystarczy zlikwidować adres relay, wymusić autoryzcję, tylko wtedy php mail też musi przejść proces autoryzacji.
Ale żeby w skrypcie php filtrować uzytkowników, którzy mogą wysylać maile, to już trzeba załatwić w tym skrypcie.
Choć np roudcube wysyła przez smtp z uwierzytelnieniem, ale nie wiem, co tam masz za skrypt php, że taki straszny z tym problem.
To by było na tyle
;-)[/quote]
Mistrzu, swoje pytanie kieruję do tych, którzy ZNAJĄ SIĘ na konfiguracji postfixa.
Skrypt mam prosty:
<?php mail('jakub@pakamera.com.pl', 'asdasdasdasd', 'sdfsdfsdfsd'); ?>
:-) i chcę, żeby to nie wysyłało maili.
Rozwiązanie z wyłączeniem funkcji "mail" działa, ale to trochę z armatą na mrówkę.
Offline
Może to zawiera odp: ftp://control.slupsk.pl/pub/Linux/Postfix-virtual-antirelay.pdf
Mistrzu, swoje pytanie kieruję do tych, którzy ZNAJĄ SIĘ na konfiguracji postfixa.[/quote]
I dlatego w pierwszym poście nie napisaleś nawet, że chodzi o wysyłanie przez relaya?
Napisałbym conieco, ale nie chcę flame robić....
To by bylo na tyle
;-)
W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem para bellum ;) | Pozdrawiam :)
Offline
[quote=Jacekalex]Może to zawiera odp: ftp://control.slupsk.pl/pub/Linux/Postfix-virtual-antirelay.pdf
Mistrzu, swoje pytanie kieruję do tych, którzy ZNAJĄ SIĘ na konfiguracji postfixa.[/quote]
I dlatego w pierwszym poście nie napisaleś nawet, że chodzi o wysyłanie przez relaya?[/quote]
Napisałem o tym w drugim poście.
Offline
@kubak z tego co pamietam i skleroza mi tej wiedzy nie usunela ;) to funkcja mail() kozysta z sendmaila, to go wylacz, i tak jak milyges napisal mozesz wylaczyc funkcje mail() w konfigu php
Offline
funkcję mail wyłączyłem
a jak wyłączyć sendmaila?
usunąć skrypt?
Offline
killall sendmail? i z runlevel usunac (init.d)?
Offline
[quote=jezoo]killall sendmail? i z runlevel usunac (init.d)?[/quote]
ja mam postfixa, więc sendmail nie chodzi jak daemon
Offline
Może skorzystaj z jednej z restrykcyjnych powłok takich jak rbash ( info w man bash ) czy [url=http://ibsh.sourceforge.net/]ibsh[/url], tam będziesz mógł określić co moga uruchamiać uzytkownicy co nie oraz wiele innych rzeczy.
Ostatnio edytowany przez ba10 (2011-07-01 13:30:39)
Offline
Jeżeli funkcja mail używa polecenia sendmail, to może zamiast tego pliku wykonywalnego sendmail podłożyć skrypt napisany np w perlu, który najpierw będzie sprawdzał kto wysyła i do kogo wysyła, i co wysyła, a potem odpalał właściwe polecenie wysłania maila?
Zmiana nazwy pliku sendmail wykonalna, można potem porzeźbić w [url=http://www.perlmonks.org/?node_id=110261]tym skrypcie[/url],
żeby sprawdzał, co trzeba, i powinno ruszyć.
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2011-07-01 13:41:34)
Offline
[quote=kubak][quote=jezoo]killall sendmail? i z runlevel usunac (init.d)?[/quote]
ja mam postfixa, więc sendmail nie chodzi jak daemon[/quote]
Jak masz go wylaczonego, to wylacz rowniez funkcje mail i kozystaj z smtp lub soketow w php, mozesz rowiniez wykozystac skrypty z pear'a do wysylania maili i masz po problemie, kolo loguje sie z danymi takimi jakie sa w bazie dla postfixa i tyle, dodajesz kolumne 'allow' i przed wyslaniem sprawdzasz czy jest 1 czy 0 i czesc piesni.
a temat uwazam za zamkniety. :P
Offline
[quote=jezoo][quote=kubak][quote=jezoo]killall sendmail? i z runlevel usunac (init.d)?[/quote]
ja mam postfixa, więc sendmail nie chodzi jak daemon[/quote]
Jak masz go wylaczonego, to wylacz rowniez funkcje mail i kozystaj z smtp lub soketow w php, mozesz rowiniez wykozystac skrypty z pear'a do wysylania maili i masz po problemie, kolo loguje sie z danymi takimi jakie sa w bazie dla postfixa i tyle, dodajesz kolumne 'allow' i przed wyslaniem sprawdzasz czy jest 1 czy 0 i czesc piesni.
a temat uwazam za zamkniety. :P[/quote]
Tak robię.
Ale jest jeszcze komenda "exec". Tej bałbym się blokować.
Offline
mozesz spokojnie zablokowac :) z reszta jezeli zastosujesz [url=http://php.net/manual/en/function.htmlspecialchars.php]ta funkcje[/url] to masz polowe problemu z glowy, po drugie exec() mozesz rowniez zablokowac poniewaz
[quote=php.info]When allowing user-supplied data to be passed to this function, use [url=http://pl2.php.net/manual/en/function.escapeshellarg.php]escapeshellarg()[/url] or [url=http://pl2.php.net/manual/en/function.escapeshellcmd.php]escapeshellcmd()[/url] to ensure that users cannot trick the system into executing arbitrary commands.[/quote]
Ostatnio edytowany przez jezoo (2011-07-02 11:25:33)
Offline
@Jezoo
[quote="kubak"]Mistrzu, swoje pytanie kieruję do tych, którzy ZNAJĄ SIĘ na konfiguracji postfixa.[/quote]
przecież z powyższego cytytu jasno wynika, że to, że autor wątku nie wie co to w serwerze pocztowym znaczy relay*, i nie wie, jak skonfigurować php (w php.ini nie musi być sendmalil, można dać dowolny skrypt)
grep -i sendmail php.ini ; http://php.net/sendmail-from ;sendmail_from = me@example.com ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ; http://php.net/sendmail-path ;sendmail_path = ; to the sendmail binary. These parameters will always replace the value of
To za to wszystko jest Postfix winien, i te straszne Hamy na dugu, które nie chcą powiedzieć, jak Postfix ma się domyśleć, o co Jaśnie Panu chodzi.
Tylko że Postfix ma prawdopodobnie ustawione przyjmowanie wszystkich maili z danego adresu IP, a już na pewno nie obsłuży autoryzacji przy wysyłaniu maila z localhosta poleceniem sendmail.
A to, że ktoś nie potrafi pomyśleć, i skonfigurować odpowiednio php,
i wymyśleć rozwiazania z zastąpieniem sendmaila innym rozwiązaniem obsługującym kontrolę dostępu czy np autoryzację, to jest wina Postfixa i nasza :P
To by bylo na tyle
;-)
Offline
@Jacekalex masz racje
dodam tylko, ze przypomnialem sobie tez swoja akcje z postfixem, rowniez mialem podobny problem, ze byle kto mogl wysylac maile z serwera, ale wystarczylo G zapytac i wszystko stalo sie jasne :)
Offline
[quote=Jacekalex]@Jezoo
[quote="kubak"]Mistrzu, swoje pytanie kieruję do tych, którzy ZNAJĄ SIĘ na konfiguracji postfixa.[/quote]
przecież z powyższego cytytu jasno wynika, że to, że autor wątku nie wie co to w serwerze pocztowym znaczy relay*, i nie wie, jak skonfigurować php (w php.ini nie musi być sendmalil, można dać dowolny skrypt)[/quote]
Gratuluję dedukcji i umiejętności czytania ze zrozumieniem!
"Chamy" pisze się przez "ch". Chyba, że chodziło Ci o szynkę.
Dzięki wszystkim za pomysły. PHP jest rozwiązany.
Nie potrafię jeszcze porządnie rozwiązać problemu shella (np. dla tych, którzy mają dostęp ssh) i użycia w nim polecenia "mail". Jasne, mogę je wyłączyć, ale nie chcę wyłączać dla wszystkich. Spróbuję z rbash / ibash.
Offline
Jeśli dajesz Ludziom dostęp ssh i powłokę shell, to ja radziłbym każdemu userowi zrobić chroot/jaila,
w tym wątku: http://forum.dug.net.pl/viewtopic.php?id=18643 jest conieco na ten temat, a do kernela dorzuciić grsecurity i paxa (są w jednej łacie), żebyś nie musiał co chwila tego serwera naprawiać.
A jeśli porobisz userom z dostepem shell chrooty, to sam zdecydujesz, jakie polecenia będą w nich dostępne.
Jednak kontrolę dostępu do funkcji mail w php trzeba będzie zrobić w konfiguracji php, przez jakiesmoduły, lub w skrypcie, ktory zastąpi polecenie sendmail.
To by było na tyle
;-)
Offline
Strony: 1
Time (s) | Query |
---|---|
0.00011 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00105 | 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.142.200.247' WHERE u.id=1 |
0.00070 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.142.200.247', 1732966055) |
0.00047 | SELECT * FROM punbb_online WHERE logged<1732965755 |
0.00050 | 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=19265 AND t.moved_to IS NULL |
0.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00303 | 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=19265 ORDER BY p.id LIMIT 0,25 |
0.00077 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=19265 |
Total query time: 0.00672 s |