Wyłącz dostarczanie lokalne w Sendmail


31

Używam Sendmaila na serwerze Centos do wysyłania wiadomości e-mail dla skryptów PHP, ale problem polega na tym, że poczta jest dostarczana do lokalnej skrzynki pocztowej na komputerze, a nie to, co jest określone w rekordach MX dla domeny - które faktycznie wskazują na inny komputer I używać do wiadomości e-mail.

Chciałbym, aby sendmail nie próbował dostarczać poczty lokalnie dla domeny, dla której skonfigurowano urządzenie, czy istnieje prosty sposób na wyłączenie dostarczania lokalnego?

Domena nie znajduje się w pliku nazw hosta lokalnego.

Robiłem już dużo googlingu i spojrzałem na:

Konfiguracja Sendmail, aby nie dostarczać poczty do lokalnego komputera

Wyłącz dostarczanie lokalne w Sendmail

Ale albo nie ma odpowiedzi, albo jest nieodpowiednia.

Nie chcę przekazywać na inny serwer, chcę tylko, aby wysyłał pocztę niezależnie od domeny.

Aby podać przykład:

Mam dwa serwery, jeden to serwer pocztowy w mail.example.com i serwer internetowy, który jest example.com, kiedy korzystam z usługi smtp na serwerze internetowym, aktualnie kieruję pocztę do lokalnej skrzynki pocztowej na example.com, ale powinien być wysyłany do skrzynek pocztowych na mail.example.com

Dane wyjściowe sendmail -bt zwraca:

TRYB TESTU ADRESU (zestaw reguł 3 NIE jest wywoływany automatycznie)
Wchodzić  
> 3,0 info@example.com
Kanonizacja danych wejściowych: info @ przyklad. com
Wejście Canonify2: informacje 
Zwraca Canonify2: informacje 
zwroty kanoniczne: informacje 
parsowanie danych wejściowych: informacje 
Parse0 input: info 
Parse0 zwraca: informacje 
Wejście ParseLocal: informacje 
Zwraca ParseLocal: informacje 
Parse1 input: info 
Parse1 zwraca: $ # local $: info
parsuje zwraca: $ # local $: info

stalkr.net/forum/… Wydaje się, że jest to najbliższa rzecz, po której właściwie jestem. W szczególności wspomniane ustawienie MAIL_HUB, ale wydaje się, że tak naprawdę nie działa.

Spróbuj wykonać następujące czynności: sendmail -bt, a następnie wpisz 3,0 użytkownik@domin.com Zapewni to wiele reguł przepisywania, ostatnie powinny dać przekaźnik, którego będzie używać. Proszę podać wynik.
Francois Wolmarans,

Cześć Francois, zredagowałem swoje pytanie, aby uwzględnić wynik

Odpowiedzi:


37

Co zrobiłem, aby wyłączyć dostawę lokalną. Będę korzystać z domeny example.com.

Wymagania:

  • example.com Wpis wskazujący na adres IP przypisany do jednego z interfejsów eth.
  • / etc / hosts definiujący example.com przypisany do tego samego adresu IP co powyżej
  • example.com Rekordy MX wskazujące na serwery Google (ASPMX.L.GOOGLE.COM itp.)
  • domyślna instalacja sendmaila (moja była na Ubuntu)

Kroki:

vim /etc/mail/sendmail.mc

na końcu:

define(`MAIL_HUB', `example.com.')dnl
define(`LOCAL_RELAY', `example.com.')dnl

i wtedy:

sendmailconfig (or /etc/mail/make depending on your distro)
service sendmail restart

testowanie:

echo -e "To: user@example.com\nSubject: Test\nTest\n" | sendmail -bm -t -v
echo -e "To: user\nSubject: Test\nTest\n" | sendmail -bm -t -v

Powinieneś zobaczyć, jak łączy się z serwerem Google, a następnie powinieneś zobaczyć swoją pocztę dostarczaną do skrzynki odbiorczej Google.


3
To działało idealnie, po prostu zastanawiam się, czy istnieje. po nazwie domeny.
Rodrigo,

Działa również bezbłędnie!
Filipe Pina

Dzięki! Próbowałem to naprawić przez jakiś czas. Zrobiłem następujące; oczyść i ponownie zainstaluj sendmail, uruchom sendmailconfig, dodaj określone linie, uruchom sendmailconfigponownie i zrób a, service sendmail restarta to zadziała!
Liam Newmarch,

@Rodrigo example.com. z kropką końcową jest kanoniczną nazwą FQDN. Przykład.com bez kropki jest względny, a zatem nieprecyzyjny, na przykład może oznaczać przykład.com.twojadomena.org. w zależności od ustawień twojego systemu operacyjnego. To jest dokładnie taka sama różnica jak między /etc/passwdietc/passwd
kubanczyk

4

Dzięki Sporkerowi i Pawłowi ustawiłeś mnie we właściwym kierunku, aby to naprawić.

Mój pierwotny problem polegał na tym, że sendmail rozważał moje konta e-mail example.com jako konta lokalne.

Te linki okazały się bardzo przydatne: Sendmail do domeny lokalnej ignoruje rekordy MX (część 2) http://lists.freebsd.org/pipermail/freebsd-questions/2004-September/057382.html http://objectmix.com/sendmail/ 367920-sendmail-ignoruje-mailertable-some-semilocal-domains.html

Ale w moim przypadku, używając FreeBSD 8.2, tak naprawdę udało się to:

# cd /etc/mail

# vim freebsd.mc

Dodaj te dwie linie:

define(`MAIL_HUB', `example.com.')dnl
define(`LOCAL_RELAY', `example.com.')dnl

Tuż przed:

MAILER(local)
MAILER(smtp)

# make

--- To jest wyjście ---

 cp freebsd.mc host.example.com.mc
 /usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 host.example.com.mc > host.example.com.cf
 cp freebsd.submit.mc host.example.com.submit.mc
 /usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 host.example.com.submit.mc > host.example.com.submit.cf

--- Koniec produkcji ---

# cp sendmail.cf sendmail.cf.bak

# cp host.example.com.cf sendmail.cf

# /etc/rc.d/sendmail restart

Mam nadzieję, że zaoszczędzi to komuś ból głowy.


1

Nie jestem osobą sendmaila, ale wierzę, że sendmail będzie traktował każdą domenę przechowywaną w /etc/mail/local-host-namesnazwie lokalnej.
Możesz spróbować opróżnić ten plik (nie usuwaj go) i ponownie uruchom sendmaila i sprawdź, jak sobie radzisz.

EDIT
nazwa pliku już wspomniałem jest właściwie ustawiony w sendmail.cfi twój nie może być ustawiony local-host-names
zajrzeć /etc/mail/sendmail.cfdo

# file containing names of hosts for which we receive email 
Fw/etc/mail/local-host-names    

To nie są w żaden sposób sprawdzone fakty, ale tylko ja myślę głośno.


Tak, dlatego już wspomniałem, że domeny nie ma w pliku nazw hosta lokalnego

Przepraszam, to nauczy mnie odpowiadać na pytania, które nie przeczytałem poprawnie.
aussielunix

Miałem ten problem na zestawie ostatnio załatanych serwerów Solaris 10 (około 100 załatanych, ale tylko garstka doświadcza problemu). To była poprawka! Dzięki!
Signal15

0

To może nie być rozwiązanie, którego szukasz, ale jeśli Twoim problemem jest to, że użytkownik „admin” lub „root” otrzymuje wiele wiadomości e-mail i ogromną skrzynkę pocztową, możesz rozważyć skonfigurowanie zadania cron w celu wyczyszczenia skrzynki pocztowej poza każdym tygodniem, dniem itp.

Mieliśmy kilka serwerów CentOS z tym problemem, ale problem polegał na tym, że chcieliśmy czasami czytać pocztę, ponieważ może to czasem pomóc zdiagnozować różne problemy.

Rozwiązaniem było po prostu cron zadanie i od czasu do czasu wycierać pudełko.

Gdybyśmy znaleźli problem ... komentujemy zadanie crona (tymczasowo) i czytamy logi i e-maile w poszukiwaniu wskazówek.

Tylko myśl ... i szybkie / łatwe rozwiązanie dla Ciebie.

Jeśli nie, spójrz na plik sendmail.mc i odpowiednio zmodyfikuj.


Szybka aktualizacja:

Nie jest to dokładnie to, o co prosisz, ale może dać ci kilka pomysłów i pomóc rzucić nieco światła na rzeczy dla Ciebie:

http://www.pettingers.org/code/sendmail-local.html


Przepraszam, że to nie pomogło. Chcę tylko, aby poczta nie była dostarczana lokalnie, dlaczego sendmail sprawia, że ​​jest to tak trudne?

0

Osobiście jestem bardziej postfiksem, ale brzmi to tak, jakbyś skonfigurował serwer wysyłający do odbierania poczty dla @ twojadomena.com. Jeśli w postfiksie znajduje się sendmail odpowiadający mechanizmowi transportu, właśnie tego używam do wewnętrznego kierowania poczty między moimi serwerami.


Nie skonfigurowałem go tak bardzo, ponieważ była to domyślna instalacja Centos Sendmail.

0

Wygląda na to, że zestaw reguł 3 usuwa informacje o domenie. Poniżej zamieściłem kilka ogólnych kroków rozwiązywania problemów. Jeśli to nie zadziała, będziesz musiał wysłać mi swój sendmail.cf, aby zobaczyć.

Z danych wyjściowych przyklad.com jest traktowany jako domena lokalna. wykonaj nslookup:

ustaw q = mx

domena.com

Jeśli daje to adres IP komputera lokalnego, musisz spojrzeć na swój dns. Zajrzyj również do / etc / hosts, aby upewnić się, że domain.com nie ma na liście.

Wydaje się również, że usuwa domenę @ domain.com. Czy możesz spróbować czegoś takiego jak użytkownik@stackoverflow.com, aby sprawdzić, czy zawiera ona również domenę lokalną.

Sprawdź także wartość Cw w pliku sendmail.cf.


Dzięki Francois, zaczynam trochę lepiej rozumieć wewnętrzne funkcje sendmaila. Zdecydowałem się po prostu zmienić nazwę hosta maszyny, aby na razie obejść różne rzeczy, więc teraz jest to www.example.com zamiast example.com, co oznacza, że ​​będzie to robić lokalnie dla użytkownika@www.example.com, ale nie user@example.com - co jest dla mnie dobrym kompromisem na tym etapie.

0

Prawdopodobnie nie to, czego chcesz, ale SSMTP jest bardzo miły dla serwera tylko wychodzącego, na którym możesz określić hub poczty.


Dzięki, dam spojrzenie SSMTP, wciąż jednak próbuję naprawić sendmaila.

0

Jeśli chcesz zwrócić błąd przy próbie dostarczenia na adres lokalny, możesz użyć mapy dostępu i czegoś takiego:

@your.domain error:nouser 550 No such user here

Jeśli chcesz, aby wiadomości e-mail były „dostarczane”, ale wyrzucane, możesz zainstalować wpis, który umożliwia aliasowanie wszystkiego dla „ @your.domain” zerowania. Przydatne może być dostarczanie co najmniej " root" lokalnie, ponieważ często jest to odbiorca raportów e-mail z zadań cron itp. Spróbuj czegoś takiego virtusertable:

root@your.domain local:root

@your.domain local:dev-null

Dzięki lokalnemu dev-nullaliasowi, który przekierowuje wiadomości do / dev / null, powinno to nadal dostarczać pocztę główną, ale wyrzucać wiadomości dostarczane innym użytkownikom.


0

Poprawka Pawla działała dla mnie, ale sendmailconfig nie istniał na centos, więc musiałem biec

cd /etc/mail    
m4 /usr/share/sendmail-cf/m4/cf.m4 sendmail.mc > sendmail.cf
service sendmail restart

aby zaktualizować konfigurację


ta druga reguła nie działa / istnieje na moim centOS
solsol

0

Potwierdzenie odpowiedzi Pawła rozwiązało mój bardzo podobny problem.

Dla każdego, kto używa FreeBSD, ale nie jest zainteresowany zbytnim zaangażowaniem się w dręczenie plików sendmail cf, następująca sekwencja posłuży do dodania dwóch wierszy w przykładzie Pawła:

cd /etc/mail
make conf (generates stock .mc/.cf files with the hostname as part of the 
filename - these will NOT be overriten during an upgrade)
vi hostname.mc
(add the two lines to the .mc file right above the last two "MAILER" lines)
make conf
cp hostname.cf sendmail.cf
/etc/rc.d/sendmail restart

0

Zastosowałem się do tych sugestii i zauważyłem, że dodając krok, o którym wspomniał Paweł,

„/ etc / hosts definiujące przyklad.com przypisany do tego samego adresu IP co powyżej”, w zasadzie dodałem adres IP mojego serwera, a następnie nazwę serwera do /etc/hostspliku i to wszystko.

Wystarczało, żebym wysłał e-maile przez Google i wrócił do moich e-maili.


0

Jeśli używasz Cpanel / WHM do zarządzania serwerem, upewnij się, że wybierasz Remote Mail Exchanger w Cpanel / WHM zamiast Automatycznie wykryj konfigurację. Remote Mail Exchanger wyśle ​​wszystkie wiadomości e-mail za pośrednictwem rekordów MX, w tym domeny lokalnej. Dzięki funkcji Automatic wiadomości lokalne w domenie będą kierowane bezpośrednio lokalnie i nie będą wysyłane na serwer zewnętrzny zdefiniowany w rekordach MX.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.