Como enviar email com meu servidor CentOS?

21

Acabei de construir um servidor doméstico modesto usando o CentOS 5.5. Desejo que o servidor possa enviar e-mails para minha conta do Gmail ou outras contas de e-mail para várias coisas, como tarefas cron. Também seria bom poder enviar e-mail através de aplicativos PHP que eu também executo / desenvolvo no servidor. Ou ainda, o servidor pode enviar emails por meio do comando mail.

Sei que existem milhões de resultados de pesquisa no Google sobre a configuração do servidor Linux como um servidor de email ou a configuração do sendmail etc. Mas eles não parecem ser o que estou procurando ... pelo menos acho que não. Não estou tentando configurar um servidor corporativo que outros clientes possam conectar para enviar e-mails ou qualquer coisa complicada assim.

Eu só quero que meu servidor me envie e-mails sobre coisas. Parece que deveria ser simples ... Alguém pode me apontar na direção certa?

ATUALIZAR

De acordo com uma solicitação de usuário abaixo, tentei este comando:

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

Sem erros ou qualquer coisa. Mas o email nunca apareceu na minha caixa de entrada. Aqui está o meumaillog

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)

Alguma pista?

Jake Wilson
fonte
1
Você tentou? Que tipo de problemas você está vendo?
Ignacio Vazquez-Abrams
Não tenho certeza do que estou procurando. Pesquiso no Google e vejo tutoriais para configurar um servidor de email Linux. É isso que eu quero?
Jake Wilson
Só notei que isso ainda estava sem resposta. Por curiosidade, você já descobriu? Você verificou se a máquina estava listada no PBL? spamhaus.org/pbl
Belmin Fernandez
Eu não fiz funcionar. Ainda não passei pelo processo de instalação do sendmail, porque os pôsteres abaixo sugerem que não é necessário simplesmente enviar um único email. Não consigo imaginar que meu pequeno servidor doméstico esteja listado em uma lista de spam, pois nunca enviei um email dele antes.
Jake Wilson
Eu até tentei o comando I simples listados acima enviar a um 10minutemail.com conta de correio electrónico com o mesmo resultado e mesma mensagem de log
Jake Wilson

Respostas:

13

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

tente o comando acima :)

Rajat
fonte
1
+1 Você não precisa de um servidor de correio no sistema para enviar correio, assim como não precisa de um servidor de correio na área de trabalho para enviar correio. O programa de correio está bem.
dunxd
1
Eu tentei este comando e não funcionou. Sem erros ou qualquer coisa. Apenas nenhum e-mail aparecendo na minha caixa de entrada do Gmail. Olhe acima no que minha maillog diz
Jake Wilson
Então ... alguma razão para isso não funcionar para mim? Qual registro devo observar para determinar por que não estou recebendo nenhum email?
Jake Wilson
6

Resposta simples:

Configure o sendmail . Depende da sua distribuição, mas isso não é nada difícil. Se você tiver alguma dúvida específica, pergunte.

Resposta complicada:

Se você está perguntando isso, provavelmente não deve simplesmente pular a arma e configurar o sendmail justtt ainda.

Você precisará levar algumas coisas em consideração:

  1. O seu ISP permite enviar e-mail? Você pode estar no intervalo de IPs que não são de servidores e, portanto, muitos provedores de e-mail bloquearão totalmente a sua instalação.

  2. Qual endereço você usará como seu endereço de origem? Você está autorizado a enviar deste endereço (SPF, DomainKeys, etc)? Caso contrário, suas mensagens podem ser detectadas como spam pelos provedores de e-mail - e com razão.

  3. Por último, mas certamente não menos importante: você realmente precisa usar seu próprio serviço SMTP? Alguma razão para usar os seus ISPs não é bom o suficiente?

Antigamente, configurar um servidor SMTP não era grande coisa. Atualmente, a configuração pode ser mais fácil, mas configurá-la para que ela realmente receba mensagens nas caixas de correio das pessoas é um desafio.

Belmin Fernandez
fonte
3

Posso confirmar que nenhuma das sugestões acima também está funcionando no meu sistema CentOS em casa - nem uma única. O que é chato!

Tentei o mesmo em uma instância nova da Amazon executando o CentOS 6.4 e, mesmo com a configuração padrão, posso enviar e-mails sem problemas. Tudo que eu tinha que fazer era

yum install mailx

após o qual o envio de e-mail, conforme descrito acima, funciona como um encanto. Instalar complicações como o sendmail NÃO é necessário para o que Jakub está tentando fazer.

Deve haver alguma configuração com meu ISP, pois não tenho um firewall configurável aqui.

Jay Versluis
fonte
2

Você precisa fazer o seguinte:

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

    para

    mydestination = localhost.mydomain.com, localhost

Teste usando o seguinte na linha de comando

  1. email [email protected] Assunto:
  2. Email de teste de demoslice.com
  3. corpo do email.
  4. .

No. 4 - há apenas um ponto final para concluir o corpo do email. Agora você deve ter correio.

O procedimento acima fornece um MTA (Mail Transfer Agent) em funcionamento. Alguns recursos que ajudarão você com uma configuração mais avançada podem ser encontrados nos artigos da slicehost sobre configuração de e-mail para o CentOS (role para baixo até a seção CentOS e e-mail). Você realmente deve considerar a configuração correta do seguinte: registros hostname, RDNS (DNS reverso) e SPF (Sender Policy Framework) com seu provedor de DNS.

seanl
fonte
Esta é uma resposta brilhante - curta e funciona.
monkjack
1

Você modificou seu /etc/mail.rc para definir o endereço smtp?

PiNoYBoY82
fonte
1
O conteúdo de /etc/mail.rcé set ask askcc append dot save crt ignore Received Message-Id Resent-Message-Id Status Mail-From Return-Path ViaO que você está sugerindo que eu faça?
Jake Wilson
0

Tente instalar o postfix e defina o mydestination no arquivo de configuração, mesmo que ele funcione com o sendmail.

Lagarta
fonte
0

O Postfix está no caminho certo, mas a menos que o Gmail pense que você é pelo menos remotamente legítimo (por exemplo, você não é um spammer), é muito improvável receber sua correspondência.

O processo está um pouco envolvido para postar aqui, mas a maneira mais simples que encontrei de conseguir isso (e receber suas mensagens) é configurar o postfix como retransmissão, usando sua própria conta do Gmail como transporte.

O processo que eu uso é detalhado aqui:

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

Não é necessário configurar certificados autoassinados (conforme sendmail) e, na minha experiência, ele simplesmente funciona!

GeoSword
fonte
0

A solução fácil não é o sendmail, mas o sendEmail:

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

Um script perl que é facilmente configurado para enviar por qualquer servidor SMTP que você possa acessar - eu o uso para enviar contas do Gmail o tempo todo, mas também funciona para SMTP comum sobre TCP na porta 25, etc.

Normalmente, envolvo o script perE sendEmail com meu próprio shell script para o Gmail:

#!/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
fonte