CentOS 서버로 이메일을 보내는 방법은 무엇입니까?


21

방금 CentOS 5.5를 사용하여 적당한 홈 서버를 구축했습니다. 서버가 cron 작업과 같은 다양한 작업을 위해 내 Gmail 계정이나 다른 이메일 계정으로 이메일을 보낼 수 있기를 원합니다. 또한 서버에서 실행 / 개발하는 PHP 응용 프로그램을 통해 전자 메일을 보낼 수 있으면 좋을 것입니다. 또는 서버가 mail 명령을 통해 이메일을 보낼 수도 있습니다.

Linux 서버를 이메일 서버로 설정하거나 sendmail 등을 구성하는 것에 대한 백만 개의 Google 검색 결과가 있다는 것을 알고 있습니다. 그러나 그들은 내가 찾고있는 것 같지는 않습니다 ... 적어도 그렇게 생각하지 않습니다. 다른 클라이언트가 전자 메일을 보내거나 그와 비슷한 것을 보낼 수있는 회사 서버를 설정하려고하지 않습니다.

서버에서 물건에 대한 이메일을 보내려고합니다. 간단한 것 같아요 ... 누군가 올바른 방향으로 나를 가리킬 수 있습니까?

최신 정보

아래의 사용자 요청에 따라이 명령을 시도했습니다.

/bin/mail -s "My Subject" "myaddress@gmail.com" < /home/john/test

오류가 없습니다. 그러나 이메일이받은 편지함에 나타나지 않았습니다. 여기 나의maillog

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)

단서가 있습니까?


1
시도 했습니까? 어떤 종류의 문제가 있습니까?
Ignacio Vazquez-Abrams

내가 무엇을 찾고 있는지 잘 모르겠습니다. Google을 검색하고 Linux Mail Server 설정에 대한 자습서를 봅니다. 그게 내가 원하는거야?
Jake Wilson

이것이 여전히 답이 없다는 것을 알았습니다. 호기심에서 알아 낸 적이 있습니까? 기기가 PBL에 나열되어 있는지 확인 했습니까? spamhaus.org/pbl
벨민 페르난데스

나는 그것을 작동시키지 못했습니다. 아래 포스터는 단순히 하나의 전자 메일을 보낼 필요가 없음을 암시하기 때문에 아직 sendmail 설치 프로세스를 거치지 않았습니다. 이전에 전자 메일을 보내지 않은 작은 홈 서버가 스팸 목록에 있다고 상상할 수 없습니다.
Jake Wilson

나는 심지어 동일한 결과와 동일한 로그 메시지 로 10minutemail.com 이메일 계정으로 보내는 위에 나열된 간단한 명령을 시도했습니다.
Jake Wilson

답변:


13

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

위의 명령을 시도하십시오 :)


1
+1 메일을 보내려면 데스크탑에 메일 서버가 필요하지 않은 것처럼 메일을 보내려면 시스템에 메일 서버가 필요하지 않습니다. 메일 프로그램은 괜찮습니다.
dunxd

1
이 명령을 시도했지만 작동하지 않았습니다. 오류가 없습니다. 내 Gmail받은 편지함에 메일이 표시되지 않습니다. 위의 제 메일 로그의 내용을보십시오
Jake Wilson

그래서 ... 왜 이것이 효과가 없는지? 메일이 수신되지 않는 이유를 확인하려면 어떤 로그를 살펴 봐야합니까?
Jake Wilson

6

간단한 답변 :

sendmail을 설정하십시오 . 배포판에 따라 다르지만 전혀 어렵지 않습니다. 구체적인 질문이 있으면 물어보십시오.

복잡한 답변 :

당신이 이것을 요구한다면, 당신은 아마 총을 뛰어 넘기고 sendmail을 그냥 설정해서는 안됩니다 .

몇 가지 사항을 고려해야합니다.

  1. ISP에서 이메일을 보낼 수 있습니까? 서버 이외의 IP 범위에있을 수 있으므로 많은 전자 메일 공급자가 귀하의 권리를 차단합니다.

  2. 발신인 주소로 어떤 주소를 사용 하시겠습니까? 이 주소 (SPF, DomainKeys 등)에서 보낼 권한이 있습니까? 그렇지 않은 경우 전자 메일 공급자가 메시지를 스팸으로 감지 할 수 있습니다.

  3. 마지막으로, 확실히 : 자신의 SMTP 서비스를 사용해야합니까? ISP 사용이 충분하지 않은 이유는 무엇입니까?

옛날에는 SMTP 서버를 설정하는 것이 그리 중요하지 않았습니다. 요즘에는 설정이 더 쉬울 수 있지만 실제로 사람들의 사서함에 메시지를 전달 하도록 설정하는 것은 어려운 일입니다.


3

위의 제안 중 어느 것도 가정의 CentOS 시스템에서 작동하지 않는다는 것을 확인할 수 있습니다. 어느 쪽이 성가시다!

그런 다음 CentOS 6.4를 실행하는 새로운 Amazon 인스턴스에서 동일하게 시도했으며 기본 구성에서도 문제없이 메일을 보낼 수 있습니다. 내가해야 할 일은

yum install mailx

그 후에는 위에서 설명한 것처럼 메일을 보내는 것이 매력처럼 작동합니다. Jakub이 수행하려는 작업에는 sendmail과 같은 복잡한 설치가 필요하지 않습니다.

여기에 구성 가능한 방화벽이 없으므로 ISP에서 일부 구성해야합니다.


2

다음을 수행해야합니다.

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

    mydestination = localhost.mydomain.com, localhost

명령 행에서 다음을 사용하여 테스트

  1. mail address@example.com 제목 :
  2. demoslice.com의 이메일 테스트
  3. 이메일 본문.
  4. .

4 번-이메일 본문을 완성하기 위해 완전히 멈추었습니다. 이제 메일이 있어야합니다.

위의 작업을 수행하면 MTA (Mail Transfer Agent)가 작동합니다. CentOS의 이메일 설정에 대한 slicehost의 기사 (CentOS 및 이메일 섹션으로 스크롤) 에서보다 고급 설정에 도움이되는 일부 리소스를 찾을 수 있습니다 . DNS 공급자와 함께 호스트 이름, RDNS (역 DNS) 및 SPF (발송 인 정책 프레임 워크) 레코드를 올바르게 설정하는 것이 좋습니다.


이것은 훌륭한 답변입니다-짧고 작동합니다.
monkjack

1

smtp 주소를 설정하기 위해 /etc/mail.rc를 수정 했습니까?


1
내용 /etc/mail.rcset ask askcc append dot save crt ignore Received Message-Id Resent-Message-Id Status Mail-From Return-Path Via무엇을 제안합니까?
Jake Wilson

0

sendmail과 함께 작동하더라도 postfix를 설치하고 구성 파일에 mydestination을 설정하십시오.


0

Postfix가 올바른 길을 가고 있지만 gmail이 적어도 원격으로 합법적이라고 생각하지 않는 한 (예 : 스팸 발송자가 아님) 메일을받는 것은 거의 불가능합니다.

이 과정은 여기에 게시하는 데 약간 관련이 있지만, 내가 이것을 달성하고 메일을 전달하는 가장 간단한 방법은 자신의 Gmail 계정을 전송 수단으로 사용하여 postfix를 릴레이로 설정하는 것입니다.

내가 사용하는 프로세스는 다음과 같습니다.

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

자체 서명 된 인증서를 설정할 필요가 없으며 (센드 메일별로) 내 경험상 작동합니다!


0

쉬운 해결책은 sendmail이 아니라 sendEmail입니다.

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

SMTP 서버를 통해 쉽게 보낼 수 있도록 구성된 펄 스크립트-항상 Gmail 계정을 통해 보내지 만 포트 25의 TCP를 통한 일반 SMTP에서도 작동합니다.

나는 보통 sendEmail perl 스크립트를 자신의 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.