Postfiks: Adres odbiorcy odrzucony: użytkownik nieznany w lokalnej tabeli adresatów

30

Kiedy próbuję wysłać wiadomość e-mail na moim serwerze Postfix na adres w tej samej domenie (na przykład, jeśli nazwa hosta serwera to mail.example.com i próbuję wysłać wiadomość e-mail na adres [email protected]), otrzymuję następujący błąd w dzienniku i e-mail nie zostanie dostarczona: Recipient address rejected: User unknown in local recipient table. Jeśli wyślę na adres w innej domenie, nie mam żadnych problemów. Oto mój plik /etc/postfix/main.cf:

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = mail.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
#myorigin = /etc/mailname
myorigin = $mydomain
mydestination = $mydomain, localhost.$mydomain, localhost
relayhost =
#fake IP address
mynetworks = 127.0.0.0/8 100.837.191.223
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
Tai Squared
źródło
Natknąłem się na to wcześniej, gdy serwery nie mają ustawionych prawidłowych nazw hostów z jakiegokolwiek powodu. Czy Twoja domena jest skonfigurowana mail.example.comjako rekord MX? Czy ten serwer jest naprawdę mail.example.com?
Bert

Odpowiedzi:

42

Wiem, że to pytanie jest trochę stare, więc zakładam, że odpowiedź na nie jest zadowalająca.

Właśnie miałem ten sam problem i zajęło mi trochę czasu, aby dowiedzieć się, co się dzieje. Myślę, że moja sytuacja była taka sama jak w pierwotnym pytaniu.

Postfix powinien przekazywać całą pocztę do innych serwerów w Internecie, w rzeczywistości nie odbiera poczty dla żadnych domen. Tak więc każda poczta wysyłana do example.com powinna być przekazywana na serwer pocztowy example.com. Rozwiązaniem, jak wyjaśniono technicznie, jest usunięcie $ mydomain z linii:

mydestination = $mydomain, localhost.$mydomain, localhost

Ta linia mówi postfiksowi, że wszelkie wiadomości wysyłane do $ moja_domena mają być odbierane i przechowywane na tym serwerze. Nie tego chcę, chcę, aby te wiadomości były wysyłane do rzeczywistego serwera pocztowego na przykład.com. Gdy zdałem sobie z tego sprawę i usunąłem example.com, poczta działała zgodnie z oczekiwaniami. Zaryzykuję, że to wyjaśnienie pomaga komuś, kto natknie się na to pytanie w przyszłości.

chmac
źródło
18

Błąd jest dość samoopisowy: docelowej nazwy użytkownika e-maila (po lewej stronie znaku @) nie można zmapować na lokalnego użytkownika w systemie (domyślne ustawienia Postfiksa) ani na domenę wirtualną (ponieważ żadna nie jest skonfigurowana poza pudełko). Decyzja o próbie wykonania tego mapowania jest kontrolowana przez listę domen w „mydestination” (plus wszelkie domeny wirtualne). Jeśli ten komputer jest w rzeczywistości podstawowym MX domeny, nieistniejący użytkownicy mają uszkodzoną pocztę. Jeśli to pole musi tylko wysyłać wiadomości wychodzące, wystarczy po prostu usunąć domenę docelową z mojej lokalizacji (poprzez usunięcie $ mydomain z listy) - nadal będzie akceptować wiadomości bezpośrednio dla [email protected], ale wiadomości dla użytkownika @ domain.tld przejdzie proces wyszukiwania MX w celu dostarczenia gdzie indziej.

techieb0y
źródło
1
uratowałeś mi dzień, oszalałem ... dlaczego mam dla siebie dwóch użytkowników, tstaerk i thorsten;)
Thorsten Staerk
5

Gdy wysyłasz wiadomość do domeny lokalnej, postfix odpowiada za sprawdzenie, czy adresat istnieje. Gdy wysyłasz wiadomość e-mail do innej domeny, postfix nie ponosi takiej odpowiedzialności.

Musisz mieć lokalnego użytkownika o nazwie test

useradd -s /bin/bash -d /home/test -U test

lub potrzebujesz aliasu od testu do lokalnego użytkownika w / etc / aliases

echo "test: root" >> /etc/aliases
postalias /etc/aliases

I powinieneś być gotowy.

Julien Vehent
źródło
Czy jest jakiś sposób na ominięcie tej kontroli, więc nie muszę tworzyć użytkownika dla każdej osoby, do której wysłałbym e-mail? Nie chcę używać tego serwera jako naszego głównego serwera poczty, aby wysyłać wychodzące wiadomości e-mail z aplikacji w przypadku wystąpienia błędów. Wolę nie aktualizować serwera za każdym razem, gdy chcę dodać nowego odbiorcę wiadomości e-mail z wnioskiem.
Tai Squared
Załóżmy, że chcesz wysłać wiadomość e-mail na adres „[email protected]”, musisz upewnić się, że lokalny postfiks NIE jest odpowiedzialny za domenę „domainz.com”, w przeciwnym razie spróbuje zweryfikować użytkownika lokalnie. Tak więc ustaw dyrektywę „mojadomena” na coś innego, na przykład „mojadomena = lokalny.serwer”, a postfix wyśle ​​wiadomość e-mail na serwer odpowiedzialny za „domainz.com”
Julien Vehent
1

Mam więc podobny problem i jeszcze go nie rozgryzłem, ale powinno to poprowadzić cię we właściwym kierunku:

http://www.postfix.org/STANDARD_CONFIGURATION_README.html

Spójrz na sekcję „Postfix na zerowym kliencie” - myślę, że tego właśnie chcesz. Próbowałem także ustawić ustawienie local_recipient_maps, jak określono w witrynie Postfix na stronie: LOCAL_RECIPIENT_README.html

Oba linki powinny robić to, o co tu chodzi, ale nie mogę ich zmusić do działania. Kiedy wykonuję pełną konfigurację klienta o wartości NULL, próba telnet w celu wysłania testowego e-maila SMTP nie działa. Pojawia się komunikat „telnet: połącz z adresem 97.74.92.30: Połączenie odrzucone”. Podczas ustawiania lokalnej mapy adresatów wyszukiwanie w komendzie RCPT TO: nie wyświetla komunikatu o błędzie, jak to było wcześniej, ale po wysłaniu wiadomości e-mail (wygląda normalnie) wiadomość e-mail nie jest wysyłana, a maillog zawiera błąd:

„Nieznana skrzynka pocztowa 550. Albo żadna skrzynka pocztowa nie jest powiązana z tą nazwą 550, albo nie masz uprawnień do jej wyświetlenia. 550 5.1.1 Użytkownik nieznany”

Daj mi znać, jeśli masz więcej szczęścia.

jeffthink
źródło