Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Postfix] Problem z reject_sender_login_mismatch

134 views
Skip to first unread message

Daniel Kossakowski

unread,
Jul 11, 2012, 2:14:45 PM7/11/12
to
Witajcie!

Mam problem z działaniem mapowania użytkowników i skrycie liczę, że może pomożecie mi go rozwikłać.

Chodzi o to, żeby umożliwić użytkownikom wysyłanie wiadomości tylko z przypisanych do nich adresów i aliasów. Nie chodzi mi o zapytanie SQL (całość trzymam w bazie), bo to nie problem, ale o to, co ono ma konkretnie zwracać?

W tej chwili wygląda ono tak:
query = SELECT CONCAT(username,'@',domain) AS `sender` FROM `mail_user` WHERE CONCAT(username,'@',domain) = '%s';

I niestety nie chce współpracować. Postfix wali 553 dla każdej możliwej tożsamości (tej dobrej i tej złej).

->553 5.7.1 <test@*.com>: Sender address rejected: not owned by user test;

Lemat

unread,
Jul 11, 2012, 3:38:12 PM7/11/12
to
twoim loginem jest nazwa użytkownika a nie email. Tymczasem zapytanie zwraca
pełne adresy email.
--
Pozdrawiam
Lemat
Zanim zadasz pytanie: proszę o informację, jaka była przyczyna śmierci
Twojego ostatniego niewolnika.

Daniel Kossakowski

unread,
Jul 11, 2012, 4:48:56 PM7/11/12
to
Faktycznie! Teraz działa jak należy.

Dziękuję za pomoc.

Daniel Kossakowski

unread,
Jul 14, 2012, 1:10:16 PM7/14/12
to
Mam jeszcze jedno pytanie odnośnie mapowania: jak dodać wyjątek, by konkretny adres był dostępny dla wszystkich uzytkowników?

Chodzi o danie skryptom możliwości korzystania z mail() jako użytkownik no-reply. W tej chwili jakakolwiek próba tego zwraca 553. no-reply@domain is not owned by user.

Lemat

unread,
Jul 14, 2012, 2:03:12 PM7/14/12
to
do zapytania dołożyć kolejną kolumnę i przerobić je: AND wyjatek='NIE'

Daniel Kossakowski

unread,
Jul 20, 2012, 1:52:13 PM7/20/12
to
Wybacz, nie rozumiem do końca Twojej koncepcji. Być może idę w złym kierunku?

Jak mi napisałeś wyżej, zapytanie ma zwrócić nazwę użytkownika (username), do którego przypisany jest adres e-mail, z którego ktoś próbuje wysłać wiadomość. Jeżeli nie zwróci nic lub nazwę użytkownika, która jest inna niż aktualna, postfix wywala 553.

Teraz pytanie jak mam zwrócić nazwę użytkownika, który pyta się o adres e-mail, skoro jedyne co dostaje, to %s = no-r...@domain.tld, a de facto jego nazwy nie znam.

Lemat

unread,
Jul 20, 2012, 3:01:49 PM7/20/12
to
zapytanie SQL w normalnym przypadku zwraca 1 wiersz wyniku - pole
zawierająca wszystkie nazwy userów uprawnionych.

Jeżeli zapytanie SQL dla tego jednego adresu email nie zwróci żadnego
wiersza wyniku to postfix nie będzie uruchamiał check_sender_login_mismatch

Zapytanie SQL nie zwróciżadnego wiersza w wyniku jeżeli nie będzie spełniony
warunek po WHERE. Warunek ten nie bedzie spełniony jeżeli w jakiś sposób
(np. dodatkową kolumną) wyróżnimy konkretny adres email.

Marek Marczykowski

unread,
Jul 20, 2012, 3:29:17 PM7/20/12
to
On 2012-07-20, Lemat <#@lemat.priv.pl> wrote:
> Daniel Kossakowski wrote:
>
>> Wybacz, nie rozumiem do końca Twojej koncepcji. Być może idę w złym
>> kierunku?
>>
>> Jak mi napisałeś wyżej, zapytanie ma zwrócić nazwę użytkownika (username),
>> do którego przypisany jest adres e-mail, z którego ktoś próbuje wysłać
>> wiadomość. Jeżeli nie zwróci nic lub nazwę użytkownika, która jest inna
>> niż aktualna, postfix wywala 553.
>>
>> Teraz pytanie jak mam zwrócić nazwę użytkownika, który pyta się o adres
>> e-mail, skoro jedyne co dostaje, to %s = no-r...@domain.tld, a de facto
>> jego nazwy nie znam.
>
> zapytanie SQL w normalnym przypadku zwraca 1 wiersz wyniku - pole
> zawierająca wszystkie nazwy userów uprawnionych.
>
> Jeżeli zapytanie SQL dla tego jednego adresu email nie zwróci żadnego
> wiersza wyniku to postfix nie będzie uruchamiał check_sender_login_mismatch
>
> Zapytanie SQL nie zwróciżadnego wiersza w wyniku jeżeli nie będzie spełniony
> warunek po WHERE. Warunek ten nie bedzie spełniony jeżeli w jakiś sposób
> (np. dodatkową kolumną) wyróżnimy konkretny adres email.

AFAIR można też zwrócić wielu użytkowników - wtedy postfix sprawdzi czy
to któryś z nich próbuje użyć tego adresu.

--
Pozdrawiam,
Marek Marczykowski | RLU #390519
marmarek at staszic waw pl | xmpp:marmarek at staszic waw pl
http://alx.pl - Szkolenia Linux, PHP, Java, Office

Daniel Kossakowski

unread,
Jul 20, 2012, 3:29:35 PM7/20/12
to
> Jeżeli zapytanie SQL dla tego jednego adresu email nie zwróci żadnego
> wiersza wyniku to postfix nie będzie uruchamiał check_sender_login_mismatch

Czyli dobrze Cię zrozumiałem, ale tu niestety pojawia się problem, gdyż mój postfix pomimo braku wyników z bazy danych zwraca 553.

Jul 20 21:27:30 [postfix/smtpd] NOQUEUE: reject: RCPT from localhost[127.0.0.1]: 553 5.7.1 <taki_unik...@domain.tld>: Sender address rejected: not owned by user xxx;

Lemat

unread,
Jul 20, 2012, 3:32:30 PM7/20/12
to
powyższy log świadczy o tym, że zapytanie zwraca wynik w postaci nazwy usera
- "xxx"

Daniel Kossakowski

unread,
Jul 20, 2012, 4:05:46 PM7/20/12
to
Imho się mylisz, prześledziłem zapytanie dla pewności w PMA. Rezultat:

MySQL zwrócił pusty wynik (zero rekordów). ( 0.0005 s )
SELECT `username`
FROM `mail_user`
WHERE CONCAT( username, '@', domain ) = 'turbo...@domain.pl'
UNION SELECT SUBSTRING_INDEX( destination, '@', 1 ) AS `username`
FROM `mail_alias`
WHERE `source` = 'turbo...@domain.pl'

Gdzie 'turbo...@domain.pl' to oczywiście parametr włożony w %s.

Lemat

unread,
Jul 20, 2012, 4:20:29 PM7/20/12
to
a co podaje wynik:

postmap -q turbo...@domain.pl
mysql:/etc/postfix/mysql_virtual_sender_login_maps.cfg


gdzie oczywiście wstawiasz dokładnie taki adres jak w logu:
Jul 20 21:27:30 [postfix/smtpd] NOQUEUE: reject: RCPT from
localhost[127.0.0.1]: 553 5.7.1 <taki_unik...@domain.tld>: Sender
address rejected: not owned by user xxx;

oraz oczywiście swoją nazwę pliku

Daniel Kossakowski

unread,
Jul 20, 2012, 4:08:16 PM7/20/12
to
Marku, jest to jakieś rozwiązanie, ale czy optymalne? W ostateczności, jeżeli nie znajdę nic lepszego, to spróbuję i tej ścieżki.

Daniel Kossakowski

unread,
Jul 21, 2012, 3:51:08 AM7/21/12
to
> postmap -q turbo...@domain.pl

Nie zwraca nic.
0 new messages