Czy mogę skonfigurować pocztę systemową do korzystania z zewnętrznego serwera SMTP?

72

Czy można skonfigurować pocztę systemową na skrzynce linux, która będzie wysyłana przez inny serwer smtp - może nawet z uwierzytelnieniem? Jeśli tak, jak to zrobić?

Jeśli nie jest to jasne, podaj przykład. Jeśli jestem w wierszu poleceń i wpisz:

cat body.txt | mail -s "just a test" [email protected]

czy możliwe jest wysłanie go za pośrednictwem zewnętrznego serwera SMTP, takiego jak G-mail?

Nie szukam „sposobu wysyłania poczty z Gmaila z wiersza poleceń”, ale raczej opcji skonfigurowania całego systemu do korzystania z określonego serwera SMTP lub ewentualnie jednego konta na serwerze SMTP (być może przesłanianie adresu z) .

cwd
źródło
W rzeczywistości tak właśnie skonfigurowano większość maszyn. Czy masz na myśli jakieś konkretne MTA? Jeśli nie (obejmuje to „co to jest MTA?”), Jaką dystrybucję prowadzisz?
Gilles,
Jestem na Ubuntu 10.04, znalazłem ten artykuł na temat konfigurowania ssmtp, wygląda na to, że może działać. czy możesz rozwinąć bardziej szczegółowe informacje na temat konfiguracji większości maszyn?
CWD

Odpowiedzi:

71

Uważam, że sSMTP jest bardzo prosty w użyciu.

W systemach opartych na Debianie:

apt-get install ssmtp

Następnie edytuj plik konfiguracyjny w /etc/ssmtp/ssmtp.conf

Przykładowa konfiguracja używania Gmaila do wysyłania wiadomości e-mail:

# root is the person who gets all mail for userids < 1000
[email protected]

# Here is the gmail configuration (or change it to your private smtp server)
mailhub=smtp.gmail.com:587
[email protected]
AuthPass=yourGmailPass
UseTLS=YES
UseSTARTTLS=YES

Uwaga : Upewnij się, że polecenie „mail” jest obecne w twoim systemie. Pakiet mailutils powinien dostarczyć ten w systemach opartych na Debianie.

Aktualizacja : Istnieją osoby (i raporty o błędach dla różnych dystrybucji Linuksa), które sSMTP nie akceptują haseł ze znakiem „spacji” lub „#”. Jeśli sSMTP nie działa dla Ciebie, może tak być.

Vangelis Tasoulas
źródło
2
dla innych może być konieczne zainstalowanie ssmtp, a następnie mailutils. myślę, że mailutils ustawia polecenie mail i dowiązania symboliczne do ssmtp, abyś mógł używać zwykłej mailskładni :)
cwd
1
@cwd Właśnie przetestowano na Ubuntu 13.04. Nie musiałem instalować mailutilspakietu (i nie jest instalowany automatycznie). ssmtppracował po wyjęciu z pudełka.
Pijusn
Właśnie z powodzeniem użyłem tego w Debianie na BeagleBone Black i musiałem najpierw zainstalować mailutils.
Dave Nelson
Na Kubuntu 14.04 musiałem zainstalować mailutils po ssmtp . Jednak zadziałało za pierwszym razem.
MariusMatutiae
6
ssmtp NIE weryfikuje certyfikatu SSL / TLS zdalnego serwera w bieżących wersjach debian, ubuntu i redhat, a także NIE weryfikuje nazwy hosta certyfikatu. Jest to poważny problem, ponieważ powoduje to, że szyfrowanie jest bezużyteczne, a Twoje hasło jest przesyłane podobnie jak zwykły tekst i każdy może go obwąchać. ssmtp nie rozwijał się aktywnie od co najmniej 2009 roku. Jeśli więc zależy Ci na bezpieczeństwie konta e-mail używanego do wysyłania wiadomości e-mail na serwerach, NIE używaj ssmtp, ale postfiks (lub coś innego): unix.stackexchange.com/ a / 118101/72087
Zulakis
23

W przypadku postfiksa :

  • Dodaj adres IP zewnętrznego przekaźnika poczty /etc/hostsi dodaj do niego alias mailrelay.
  • Zmodyfikuj konfigurację Postfiksa:

    relayhost = [mailrelay]
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
    smtp_sasl_security_options = noanonymous
    
  • Edytować /etc/postfix/smtp_auth

    mailrelay login:password
    
  • Konwertuj na format skrótu

postmap /etc/postfix/smtp_auth

Nie trzeba mówić, że tylko root powinien móc to odczytać ... chmod u=r,og=-

Nils
źródło
9

mailx obsługuje ustawianie serwera smtp na CLI ...

echo "message" | mailx -S smtp=$smtphost:$smtpport -s "subject line" -v [email protected]

Nic nie musi być instalowane, pod warunkiem, że twój serwer smtp pozwala wysyłać nie uwierzytelnione wiadomości.

Nie ma jednej odpowiedzi, która ustawiałaby serwer smtp dla wszystkich bitów oprogramowania, które możesz mieć na swoim Linux-ie. Każdy klient poczty e-mail może skonfigurować serwer SMTP.

teknopaul
źródło
Pamiętaj, aby postawić -S var=val przed odbiorcą.
Benoit Duffez
Co zrobić, jeśli nieautoryzowana poczta jest niedozwolona? Dostałem, że klient nie został uwierzytelniony, aby wysłać anonimową pocztę podczas MAIL,
Mian Asbat Ahmad
7

Moim ulubionym jest klient poczty e-mail ( github ). To naprawdę proste, nie wymaga skomplikowanej konfiguracji, nie wymaga żadnych zależności. I możesz podać argument smtp-server za pomocą wiersza poleceń, co oznacza, że ​​jest bardziej odpowiedni do skryptów. Szkoda tylko, że większość dystrybucji Linuksa nie zawiera tego narzędzia, więc musisz go skompilować samodzielnie.

Cytaty z e-maila wyświetlanego na github

P: Co to jest „e-mail”?

Odp .: „email” to program, który zaprojektowałem, który wysyła pocztę e-mail za pomocą wiersza polecenia do zdalnych serwerów smtp lub wewnętrznie korzysta z „sendmail” oraz w pełni współdziała z GNUPG w celu szyfrowania i podpisywania wiadomości e-mail, więc decydujesz się to zrobić. .. Możesz pobrać GNUPG na: http://www.gnupg.org

Dziękujemy cygwin za poinformowanie mnie o tym przydatnym kliencie e-mail .

Skompiluj i zainstaluj

./configure
make
./install.sh --version 3.1.3 --prefix /usr --mandir /usr/share/man --sysconfdir /etc

Opcje wiersza poleceń wiadomości e-mail

$ email --help
Options information is as follows
email [options] recipient1,recipient2,...

    -h, -help module          Print this message or specify one of the below options
    -V, -verbose              Display mailing progress.
    -f, -from-addr            Senders mail address
    -n, -from-name            Senders name
    -b, -blank-mail           Allows you to send a blank email
    -e, -encrypt              Encrypt the e-mail for first recipient before sending
    -s, -subject subject      Subject of message
    -r, -smtp-server server   Specify a temporary SMTP server for sending
    -p, -smtp-port port       Specify the SMTP port to connect to
    -a, -attach file          Attach file and base64 encode
    -c, -conf-file file       Path to non-default configuration file
    -t, -check-config         Simply parse the email.conf file for errors
    -x, -timeout              Set socket timeout.
        -cc email,email,...   Copy recipients
        -bcc email,email,...  Blind Copy recipients
        -sign                 Sign the email with GPG
        -html                 Send message in HTML format ( Make your own HTML! )
        -tls                  Use TLS/SSL
    -m, -smtp-auth type       Set the SMTP AUTH type (plain or login)
    -u, -smtp-user username   Specify your username for SMTP AUTH
    -i, -smtp-pass password   Specify your password for SMTP AUTH
    -g, -gpg-pass             Specify your password for GPG
    -H, -header string        Add header (can be used multiple times)
        -high-priority        Send the email with high priority
        -no-encoding          Don't use UTF-8 encoding

Przykładowe użycie

Prosta poczta z określonym serwerem SMTP

echo "mail body" | email -subject "unix.stackexchange.com Q36982" -from-name LiuYan刘研 -from-addr [email protected] -smtp-server smtp.domain.com -smtp-port 25 [email protected] [email protected]

Poczta HTML

echo "<h1>header</h1><p>paragraph</p>" | email -html -subject "unix.stackexchange.com Q36982 HTML mail" [email protected]

Załącznik (y)

echo "see the attachment(s)" | email -subject "This is my email.conf file" -attach /etc/email/email.conf -attach [email protected]
LiuYan 刘 研
źródło
2

Skonfiguruj lokalny serwer SMTP exim, postępując zgodnie z instrukcjami na tej stronie, ale wybierz opcję „poczta wysłana przez smarthost; brak poczty lokalnej” z pierwszego ekranu konfiguracji Exim. Spowoduje to skonfigurowanie serwera SMTP w skrzynce, który może odbierać pocztę z poleceń „mail” lub „mailx” i przesyła wszystkie wiadomości do smarthosta (w twoim przypadku do serwera Gmaila) w celu dostarczenia.

Aby wysyłać wychodzące wiadomości e-mail za pośrednictwem serwera Gmaila, musisz skonfigurować obsługę TLS dla Exim , co nie jest trywialne. W tym Howto podano wyjaśnienia, a tutaj znajduje się link z dalszymi wyjaśnieniami dotyczącymi Gmaila. Powinieneś pozwolić sobie na kilka godzin, aby to zadziałało. Proponuję rozpocząć od wysłania wiadomości e-mail ze swojego urządzenia na serwer SMTP z włączonym TLS, do którego masz dostęp root, abyś mógł debugować konfigurację Exim TLS z obu stron przed próbą wysłania przez serwer Gmail. Ponieważ komunikacja jest szyfrowana, nie będzie można używać narzędzi takich jak tcpdump do analizy protokołu na linii.

Eli Rosencruft
źródło
1

Jeśli masz połączenie z zewnętrznym serwerem smtp z hostem, możesz skonfigurować smtp na hoście i wysyłać e-maile.

Konfiguracja SMTP w krokach Linuxa można znaleźć tutaj: http://kerneltalks.com/config/guide-smtp-configuration-linux/

Przykłady komend e-mail można znaleźć tutaj: http://kerneltalks.com/commands/examples-send-email-through-terminal/

Shrikant
źródło
Odpowiedzi powinny zawierać wystarczającą liczbę szczegółów, aby stać samodzielnie. Posiadanie linków z bardziej wyczerpującymi informacjami jest w porządku, ale przynajmniej część połączonego materiału powinna być cytowana w odpowiedzi, aby była użyteczna po ustawieniu zgnilizny linków.
user4556274