Jak skonfigurować sendmail do przekazywania przez określony serwer

11

Za moim modemem kablowym mam małą konfigurację serwera domowego (komunikacja bresnan). Chcę, aby to pole mogło wysyłać wiadomości e-mail (nie odbierać) z powiadomieniami i tym podobne.

Co już zrobiłem:

  • Zainstalowałem i skonfigurowałem sendmaila.
  • Dodałem mail.bresnan.netjako moją SMART_HOSTdyrektywę.

Wierzę, że problem jest

Gdy próbuję wysłać wiadomość e-mail, w moim dzienniku poczty pojawiają się następujące informacje:

Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530: from=aburns, 
  size=140, class=0, nrcpts=1, 
  msgid=<[email protected]>, 
  relay=aburns@localhost
Dec 22 10:24:17 batcave sm-mta[1531]: oBMHOHWZ001531: from=<[email protected]>, 
  size=397, class=0, nrcpts=1,
  msgid=<[email protected]>,
  proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530:
  to=<[email protected]>, ctladdr=aburns (1000/1000),
  delay=00:00:00, xdelay=00:00:00, mailer=relay,
  pri=30140, relay=[127.0.0.1] [127.0.0.1],
  dsn=2.0.0, stat=Sent (oBMHOHWZ001531 Message accepted for delivery)
Dec 22 10:24:18 batcave sm-mta[1517]: oBMH9mVv001357:
  to=<[email protected]>, ctladdr=<[email protected]>
  (1000/1000), delay=00:14:30, xdelay=00:00:42, mailer=relay,
  pri=300339, relay=pmx0.bresnan.net. [69.145.248.1],
  dsn=4.0.0, stat=Deferred: Connection timed out with pmx0.bresnan.net.

Możesz zobaczyć, gdzie wiadomość jest akceptowana do dostarczenia przez mój serwer sendmail, a następnie, gdzie próbuje ona przekazać serwer bresnan i upłynął limit czasu.

To jest moje pytanie. Czytelnicy zauważą, że pmx0.bresnan.netnie tak mam SMART_HOSTustawioną dyrektywę. To jest MXserwer (zewnętrzny?) Dla domeny bresnan.com/net. Najwyraźniej bresnan ma skonfigurowaną sieć, abyś nie mógł uzyskać dostępu do tego serwera z własnej sieci, a zamiast tego musiał korzystać z mail.bresnan.netserwera (z którym mogę się połączyć). Problem polega na tym, że nie wiem, jak powiedzieć sendmailowi, aby używał tego serwera, a nie domeny .

Co próbowałem

  • Ustawienie wpisu hosta tak, aby serwer pmx0 wskazywał na adres IP poczty. To nie działa, co ma sens, ponieważ sendmail oczywiście wykonuje zapytanie MX, aby znaleźć serwer, który zwraca adres IP, więc nigdy nie ma potrzeby wykonywania „normalnego” rozwiązania DNS, aby plik hostów nigdy się nie angażował.

Poprawka (dla całej poczty wychodzącej):

Ponownie, rekwizyty trafiają do webmina (patrz uwaga poniżej) za pomoc w nauce tego. Jeśli wpiszesz swój smarthost za pomocą nawiasów kwadratowych, które nakazują sendmailowi, aby nie przeprowadzał wyszukiwania MX, więc: define('SMART_HOST','[69.145.248.18]')(Napraw cudzysłowy-> backticks) faktycznie działa bez tabeli mailera.

Poprawka (dla określonych domen):

Jak wskazano poniżej, konfiguracja mailertablejest wymagana. Jednak, jak wskazano na stronie podręcznika , ta funkcja musi być również włączona w twoim sendmail.mcpliku.

Zauważ też, że trasa mailera nie zmusza sendmaila do używania określonego serwera do wszystkich operacji, opiera się na adresie odbiorcy. W rzeczywistości jest to dla mnie OK, ponieważ muszę wysłać tylko do kilku domen (Gmail, Hosting Google i moja praca).

Podsumowanie :

  • Dodaj FEATURE('mailertable')do swojego sendmail.mcpliku. (zauważ, że pierwszy cytat powinien być zwrotny.
  • Utwórz /etc/mail/mailertableplik (patrz strona podręcznika man )
  • Utwórz plik mapy: sudo makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
  • Odbuduj swoje konfiguracje make -C /etc/mail
  • Uruchom ponownie sendmaila: service sendmail restart

UWAGA: ja bardzo polecam korzystania webmina do edycji / odbudować te pliki. Bez tego oszalałbym, próbując dowiedzieć się, dlaczego mój plik do wysłania był ignorowany.

ErebusBat
źródło
Czy możemy zobaczyć twój sendmail.mc?
larsks
Czy po wprowadzeniu zmian w pliku konfiguracyjnym sendmail.mc zrestartowałeś sendmaila po każdej zmianie?
ewwhite

Odpowiedzi:

7

Możesz obejść wyszukiwanie MX, dodając krótki wpis do /etc/mail/mailertablepliku sendmaila .

Zawartość pliku powinna prawdopodobnie zawierać jeden wiersz, taki jak:

bresnan.net       esmtp:[69.145.248.18]

Zapisz plik i uruchom ponownie sendmail (lub przebuduj sendmail.cf, jeśli trzeba to zrobić ręcznie).

ewwhite
źródło
2
Twoja odpowiedź była poprawna; musiałem jednak podjąć dodatkowe kroki. Dla innych, którzy napotykają ten problem, zobacz moją edycję powyżej.
ErebusBat