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.net
jako mojąSMART_HOST
dyrektywę.
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.net
nie tak mam SMART_HOST
ustawioną dyrektywę. To jest MX
serwer (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.net
serwera (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 mailertable
jest wymagana. Jednak, jak wskazano na stronie podręcznika , ta funkcja musi być również włączona w twoim sendmail.mc
pliku.
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 swojegosendmail.mc
pliku. (zauważ, że pierwszy cytat powinien być zwrotny. - Utwórz
/etc/mail/mailertable
plik (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.
Odpowiedzi:
Możesz obejść wyszukiwanie MX, dodając krótki wpis do
/etc/mail/mailertable
pliku sendmaila .Zawartość pliku powinna prawdopodobnie zawierać jeden wiersz, taki jak:
Zapisz plik i uruchom ponownie sendmail (lub przebuduj sendmail.cf, jeśli trzeba to zrobić ręcznie).
źródło