Jak wysłać wiadomość e-mail za pomocą mojego serwera CentOS?

21

Właśnie zbudowałem skromny serwer domowy przy użyciu CentOS 5.5. Chcę, aby serwer mógł wysyłać wiadomości e-mail na moje konto Gmail lub inne konta e-mail dotyczące różnych rzeczy, takich jak zadania cron. Byłoby również miło móc wysyłać wiadomości e-mail za pośrednictwem aplikacji PHP, które uruchamiam / rozwijam również na serwerze. Lub nawet serwer może wysyłać wiadomości e-mail za pomocą polecenia mail.

Wiem, że istnieje milion wyników wyszukiwania Google dotyczących konfigurowania serwera Linux jako serwera poczty e-mail lub konfigurowania sendmaila itp. Ale wydaje się, że nie są tym, czego szukam ... a przynajmniej tak mi się nie wydaje. Nie próbuję konfigurować serwera firmowego, z którym inni klienci mogą się łączyć, aby wysyłać e-maile lub cokolwiek bardziej skomplikowanego.

Chcę tylko, aby mój serwer wysyłał mi e-maile na różne tematy. Wydaje się, że powinno to być proste ... Czy ktoś może skierować mnie w dobrym kierunku?

AKTUALIZACJA

Na poniższe żądanie użytkowników wypróbowałem to polecenie:

/bin/mail -s "My Subject" "[email protected]" < /home/john/test

Żadnych błędów ani nic. Ale e-mail nigdy nie pojawił się w mojej skrzynce odbiorczej. Tutaj jest mójmaillog

Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: from=root, size=10906, class=0, nrcpts=1, msgid=<[email protected]>, relay=root@localhost
Oct 27 00:52:19 localhost sendmail[13703]: o9R6qJOd013703: from=<[email protected]>, size=11209, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: [email protected], ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=40906, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (o9R6qJOd013703 Message accepted for delivery)

Jakieś wskazówki?

Jake Wilson
źródło
1
Czy próbowałeś? Jakie widzisz problemy?
Ignacio Vazquez-Abrams
Nie jestem pewien, czego szukam. Przeszukuję Google i widzę tutoriale do konfigurowania Linux Mail Server. Czy tego chcę?
Jake Wilson,
Właśnie zauważyłem, że wciąż nie było odpowiedzi. Z ciekawości, wymyśliłeś to? Czy sprawdziłeś, czy urządzenie znajduje się na liście PBL? spamhaus.org/pbl
Belmin Fernandez
Nie udało mi się go uruchomić. Nie przeszedłem jeszcze procesu instalacji sendmaila, ponieważ poniższe plakaty sugerują, że nie powinno być wymagane, aby wysłać tylko jedną wiadomość e-mail. Nie mogę sobie wyobrazić, że mój mały serwer domowy znajduje się na liście spamu, ponieważ nigdy wcześniej nie wysłałem z niego wiadomości e-mail.
Jake Wilson,
Próbowałem nawet prostego polecenia, które wymieniłem powyżej, wysyłając na konto e-mail 10minutemail.com z tym samym wynikiem i tym samym komunikatem dziennika
Jake Wilson

Odpowiedzi:

13

/bin/mail -s "Enter Subject Line here" -a /home/.../whateverFileYouWantAttached "you@YourEmailAddress" < /home/me/textBody.letter

spróbuj powyżej polecenia :)

Rajat
źródło
1
+1 Nie potrzebujesz serwera pocztowego w systemie, aby wysyłać pocztę, tak jak nie potrzebujesz serwera pocztowego na pulpicie, aby wysyłać pocztę. Program pocztowy jest w porządku.
dunxd,
1
Próbowałem tego polecenia i nie zadziałało. Bez błędów i nic. Po prostu nie ma poczty w mojej skrzynce odbiorczej Gmail. Spójrz powyżej na to, co mówi mój maillog
Jake Wilson
Więc ... jakiś powód, dla którego to nie działa dla mnie? Jakiego dziennika powinienem szukać, aby ustalić, dlaczego nie otrzymuję żadnej poczty?
Jake Wilson,
6

Prosta odpowiedź:

Skonfiguruj sendmail . Będzie to zależeć od twojej dystrybucji, ale wcale nie jest to trudne. Jeśli masz jakieś pytania, zadaj je.

Skomplikowana odpowiedź:

Jeśli o to pytasz, prawdopodobnie nie powinieneś po prostu przeskoczyć z pistoletu i skonfigurować sendmail justtt .

Musisz wziąć pod uwagę kilka rzeczy:

  1. Czy Twój dostawca usług internetowych pozwala ci wysyłać wiadomości e-mail? Być może znajdujesz się w zakresie adresów IP innych niż serwer, dlatego wielu dostawców poczty e-mail zablokuje Twoje.

  2. Jakiego adresu użyjesz jako adresu nadawcy? Czy masz uprawnienia do wysyłania z tego adresu (SPF, DomainKeys itp.)? Jeśli nie, Twoje wiadomości mogą zostać wykryte przez dostawców poczty e-mail jako spam - i słusznie.

  3. Na koniec, ale na pewno nie najmniej ważne: czy naprawdę musisz korzystać z własnej usługi SMTP? Czy jest jakiś powód, dla którego korzystanie z usługodawcy internetowego jest niewystarczające?

W przeszłości konfigurowanie serwera SMTP nie było wielkim problemem. W dzisiejszych czasach konfiguracja może być łatwiejsza, ale skonfigurowanie jej w taki sposób, aby faktycznie dostawała wiadomości do skrzynek pocztowych ludzi , jest wyzwaniem.

Belmin Fernandez
źródło
3

Mogę potwierdzić, że żadna z powyższych sugestii nie działa w moim systemie CentOS w domu - ani jednej. Co jest denerwujące!

Potem spróbowałem tego samego na świeżej instancji Amazona z systemem CentOS 6.4 i nawet przy domyślnej konfiguracji mogę wysyłać pocztę bez problemów. Wszystko, co musiałem zrobić, to

yum install mailx

po czym wysyłanie poczty jak opisano powyżej działa jak urok. Instalowanie komplikacji takich jak sendmail NIE jest konieczne do tego, co Jakub próbuje zrobić.

To musi być jakaś konfiguracja z moim ISP, ponieważ nie mam tutaj konfigurowalnej zapory ogniowej.

Jay Versluis
źródło
2

Musisz wykonać następujące czynności:

  1. sudo yum install postfix telnet mailx
  2. sudo /etc/init.d/postfix start
  3. sudo vi /etc/postfix/main.cf
  4. Zmiana mydestination = mydomain.com, localhost.mydomain.com, localhost

    do

    mydestination = localhost.mydomain.com, localhost

Przetestuj za pomocą następującego polecenia z wiersza polecenia

  1. adres [email protected] Temat:
  2. Testowy e-mail z demoslice.com Test
  3. treść wiadomości e-mail.
  4. .

Nr 4 - jest tylko kropka, żeby uzupełnić treść e-maila. Powinieneś teraz mieć pocztę.

Dzięki powyższym otrzymujesz działającego MTA (Mail Transfer Agent). Niektóre zasoby, które pomogą ci w bardziej zaawansowanej konfiguracji, można znaleźć w artykułach slicehost na temat konfiguracji poczty e-mail dla CentOS (przewiń w dół do sekcji CentOS i poczta e-mail). Naprawdę powinieneś rozważyć ustawienie następujących ustawień: nazwa hosta, RDNS (Reverse DNS) i SPF (Sender Policy Framework) u swojego dostawcy DNS.

Seanl
źródło
To genialna odpowiedź - krótka i działa.
monkjack
1

Czy zmodyfikowałeś /etc/mail.rc, aby ustawić adres smtp?

PiNoYBoY82
źródło
1
Treść /etc/mail.rcbrzmi: set ask askcc append dot save crt ignore Received Message-Id Resent-Message-Id Status Mail-From Return-Path Viaco sugerujesz?
Jake Wilson,
0

Spróbuj zainstalować postfiks i ustaw mydestination w pliku konfiguracyjnym, nawet jeśli powinien on działać z sendmailem.

Gąsienica
źródło
0

Postfix jest na dobrej drodze, ale jeśli Gmail nie uzna, że ​​jesteś przynajmniej zdalnie uprawniony (np. Nie jesteś spamerem), otrzymanie dostarczonej poczty jest mało prawdopodobne.

W tym przypadku proces jest nieco zaangażowany, ale najprostszym sposobem na osiągnięcie tego (i dostarczenie poczty) jest skonfigurowanie Postfixa jako przekaźnika, używając własnego konta Gmail jako transportu.

Proces, którego używam jest szczegółowo opisany tutaj:

http://rs20.mine.nu/w/2011/07/gmail-as-relay-host-in-postfix/

Nie trzeba konfigurować certyfikatów z podpisem własnym (jak w przypadku sendmaila) i z mojego doświadczenia wynika, że ​​to po prostu działa!

GeoSword
źródło
0

Łatwym rozwiązaniem nie jest sendmail, ale sendEmail:

http://caspian.dotconf.net/menu/Software/SendEmail/#download

Skrypt perla, który można łatwo skonfigurować do wysyłania za pośrednictwem dowolnego serwera SMTP, na który można się dostać - używam go do wysyłania za pośrednictwem kont Gmail przez cały czas, ale działa również w przypadku zwykłego SMTP przez TCP na porcie 25 itp.

Zwykle pakuję skrypt perl sendEmail własnym skryptem powłoki dla Gmaila:

#!/bin/bash

# Send gmail through an account specified in ~/.sendGmailAuthFile (or file identified with -k.)
# The auth file must have values for the -f (from@domain) and -xp (password) options of sendEmail,
# structured as:
#
#    [email protected]
#    pwd=xxxxxxx
#
# We will fill in the rest, and other params are passed through to sendEmail
#
# Example: sendGmail -u "My subject line" -t "[email protected]" < message.txt

function sendGmailImmed {
        local authFile="$HOME/.sendGmailAuthFile"
        for arg in "$@"; do
                if [[ "$arg" == "-k" ]]; then
                        shift
                        authFile="$1"
                        shift
                fi
        done
        initAuthFile $authFile
        source $authFile

        sendEmail -f $user -xu $user -xp $pwd -s smtp.gmail.com:587 -o tls=yes "$@"
}

function initAuthFile {
        # If the authfile doesn't exist, we'll create a dummy:
        if [[ ! -f $1 ]]; then
                echo "# sendGmail authentication file: " > $1
                echo "[email protected]" >> $1
                echo "pwd=my-password" >> $1
                echo "A shell auth file has been created as $1"
        fi
}

if [[ -z $sourceMe ]]; then
        sendGmailImmed "$@"
fi
Stabledog
źródło