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" "myaddress@gmail.com" < /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=<201010270652.o9R6qJhU013702@localhost.localdomain>, relay=root@localhost
Oct 27 00:52:19 localhost sendmail[13703]: o9R6qJOd013703: from=<root@localhost.localdomain>, size=11209, class=0, nrcpts=1, msgid=<201010270652.o9R6qJhU013702@localhost.localdomain>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: to=myaddress@gmail.com, 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?


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 :)


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.


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.


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 address@example.com 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.


Esta é uma resposta brilhante - curta e funciona.
— monkjack

1

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


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.


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!


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:
#
#    user=me.surnamen@gmail.com
#    pwd=xxxxxxx
#
# We will fill in the rest, and other params are passed through to sendEmail
#
# Example: sendGmail -u "My subject line" -t "test@whatever.com" < 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 "user=my.name@gmail.com" >> $1
                echo "pwd=my-password" >> $1
                echo "A shell auth file has been created as $1"
        fi
}

if [[ -z $sourceMe ]]; then
        sendGmailImmed "$@"
fi
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.