Lekki wychodzący serwer SMTP


46

Czego używasz jako lekkiego SMTP tylko do wychodzących wiadomości e-mail?

Korzystam z aplikacji, która wysyła wiadomości e-mail za pośrednictwem SMTP, gdy zdarzają się zdarzenia, i nie potrzebuję w pełni funkcjonalnego serwera poczty elektronicznej.

EDYCJA: Cieszę się, że mogę użyć czegoś takiego jak postfix (i zrobić), jeśli to najlepszy wybór. Myślałem, że może być coś znacznie prostszego, co kończy się po wyjęciu z pudełka.


Myślę, że jest całkowicie rozsądne trzymać się czegoś takiego jak exim i postfix. Nie są trudne do skonfigurowania, jeśli robisz proste rzeczy.
Faheem Mitha

Jaka jest twoja definicja „lekkości”? Jak duże są wiadomości? Jak często „raz na jakiś czas”?
Mike B,

Odpowiedzi:


22

Istnieje kilka opcji minimalnej liczby agentów przekazujących pocztę tylko do przekazywania (MTA lub „serwerów pocztowych”), z których niektóre zostały wspomniane w innych odpowiedziach:

Aby którykolwiek z nich działał, potrzebujesz pełnoprawnego MTA, które będzie dalej przekazywać wiadomości (znane jako „centrum poczty”) i zdecydowanie zaleca się kontrolowanie tego centrum poczty. Bad Things ™ może się zdarzyć inaczej.


esmtp nie jest już utrzymywany.
Nikola Kotur,

1
nullmailer ma poważny problem ze zgodnością SMTP: ponawia próbę nieskończenie, gdy pojawia się stały błąd SMTP. Może to kosztować prawdziwe pieniądze, jeśli zapłacisz za przepustowość / tranzyt bugs.debian.org/cgi-bin/bugreport.cgi?bug=329192
telent

@telent: nie powinieneś używać nullmailera w takim scenariuszu.

Dzięki! Podręcznik konfiguracji na stronie Troubleshooters.com/linux/nullmailer zwraca uwagę na problem bezpieczeństwa z nullmailer: ujawnia hasła w wierszu poleceń, a przynajmniej używał tego. Inne rozmowy zauważają, że mstmp sprawia, że ​​jest nieco mniej jasne, jak kolejkować pocztę niż nullmailer.
nealmcb

11

IMHO, najprostszym sposobem na to jest postfiks. Możesz skonfigurować go jako lekki przekaźnik wychodzący za pomocą następujących poleceń:

postconf -e relayhost=other.mailserver.com
postconf -e myorigin=my.domainname.com

Tak długo, jak serwer SMTP określony w relayhostnie wymaga uwierzytelnienia, umożliwia przekazywanie lub jest prawidłowym miejscem docelowym dla adresu odbiorcy, będzie to działać.

myoriginParametr będzie domyślna nazwa domeny. Jeśli więc wyślesz pocztę do foo, trafi ona na adres foo@my.domainname.com. Poczta wysyłana przez pasek użytkownika będzie pochodzić z bar@my.domainname.com.

Jeśli musisz się uwierzytelnić i chcesz obsługiwać TLS, uruchom także następujące polecenia:

postconf -e smtp_tls_security_level=may
postconf -e smtp_sasl_auth_enable=yes
postconf -e smtp_sasl_password_maps=pcre:/etc/postfix/sasl_password_maps

Następnie /etc/postfix/sasl_password_mapsmieć tę treść:

/./ username:password

Cała poczta zostanie wysłana do twojego przekaźnika z podaną nazwą użytkownika i hasłem.


Wypróbowałem te ustawienia i
pojawia

1
Zainstaluj pcre i / lub postfix-pcre i spróbuj ponownie.
bahamat

Doszedłem do wniosku, że w międzyczasie brakowało dwóch pakietów, pierwszy to postfix-pcre, jak powiedziałeś, ale drugi był dziwny - libsasl2-modules. Zastanawiam się, jak zainstalowano libsasl2 i libsasl2-modules-db, ale brakuje modułów libsasl2 ... Teraz w końcu wszystko działa. Czy możesz dodać te kluczowe informacje do swojej odpowiedzi?
valentt

1
Do tls również użyłem: relayhost=other.mailserver.com:465wtedy smtp_tls_wrappermode=yesi smtp_tls_security_level=encryptale próbuje użyć lokalnego użytkownika jako auth. Muszę jakoś przepisać użytkownika autoryzacji.
Tu-Reinstate Monica-dor duh

„Tak długo, jak serwer SMTP określony w przekaźniku hosta nie wymaga uwierzytelnienia” -> ok, ale obecnie rzadko tak jest. Twoja sugestia jest poprawna, ale w większości nieistotna!
FarO,

9

Zakładając, że potrzebujesz programu, który możesz uruchomić z powłoki, takiego jak sendmail (8), być może MSMTP spełni twoje potrzeby? Może łączyć się ze zdalnym serwerem SMTP i przesyłać pocztę, którą otrzymuje w standardowy sposób, podobnie jak sendmail.


Używam do tego MSMTP, działa świetnie, a konfiguracja jest bardzo prosta.
dsp

Cieszę się, że to poleciłeś. Od dłuższego czasu szukałem czegoś takiego. Konfiguracja sendmaila jest po prostu zbyt zróżnicowana dla moich potrzeb.
ixtmixilix

4

ESMTP to serwer przesyłania poczty tylko do przekazywania, który może działać w Twojej aplikacji.


1
projekt wydaje się martwy w 2009 r.
SHernandez

2

Możesz znaleźć sSMTP odpowiedni dla twoich potrzeb. Przeczytaj ten artykuł i jego ograniczenia.

Szczerze mówiąc, nie byłbym zbytnio zestresowany instalowaniem postfiksa lub exim, nawet jeśli to tylko do wysyłania e-maili.


1
+1 dla ssmtp, -1 za niepotrzebny komentarz na sendmaila, a także rekomendowanie użyciu pełnej MTA, który jest sposób trudniej zrobić prawo. źle skonfigurowane i utrzymywane serwery pocztowe sprawiają, że życie nas administratorów poczty jest piekłem.

@hop: Nie zgadzam się w obu kwestiach. sendmail jest okropny. Ponadto exim jest na przykład domyślną wersją Debiana i jest całkowicie prosty w użyciu. Podobnie jest z postfiksem, ale nigdy go nie użyłem.
Faheem Mitha


1

Technicznie nie potrzebujesz serwera poczty e-mail na swoim hoście, to czego potrzebujesz (i prawdopodobnie już masz) to klient smtp (lub MUA), który może połączyć się z twoim korporacyjnym serwerem SMTP (który może być gdziekolwiek możesz się połączyć .)

W zależności od aplikacji (i języka programowania, w którym została napisana) istnieje wiele różnych sposobów łączenia się aplikacji z serwerem SMTP w sieci.

Zwykle w przypadku PHP lub Python istnieje plik konfiguracyjny z aplikacją określający serwer „SMTP” (który może znajdować się na hoście lub w innym miejscu w sieci). Jeśli masz już serwer poczty w sieci, po prostu wskaż konfiguracja do tego serwera.

Jeśli nie ma innych opcji, aplikacja może wygenerować wiadomość e-mail na standardowe wyjście, które można przetworzyć za pomocą:

listoftargets = „me@example.com jab@example.com” echo „Testuj zawartość” | mail -s „Temat testu” $ listoftargets

W niektórych systemach istnieje już minimalny serwer pocztowy do wysyłania.

Sam T.


Mam całą masę serwerów w chmurze i naprawdę chciałem, aby każdy miał własne wychodzące serwery SMTP, zamiast polegać na czymkolwiek zewnętrznym. W ten sposób, jeśli mój zdalny serwer SMTP jest wyłączony, nie wpływa to na każdy serwer.
FlappySocks,

1) jeśli pozwolisz PHP lub Pythonowi wykonać część smtp, musisz wykonać całą pracę (kolejkowanie, obsługa błędów), którą poradzi sobie MTA. 2) na końcu zaprzeczasz temu, co mówisz na początku

Niektóre aplikacje linuksowe są skonfigurowane tak, aby oczekiwać maillub sendmailnazwane pliki wykonywalne. Powiadomienia systemowe Nie o to chodzi, prawda? W przypadku czegokolwiek innego nie ma żadnych ograniczeń.
Craig Hicks
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.