외부 SMTP 서버를 사용하도록 시스템 메일을 설정할 수 있습니까?


72

리눅스 박스에 시스템 메일을 설정하여 다른 smtp 서버를 통해 전송되도록 할 수 있습니까? 그렇다면 어떻게해야합니까?

확실하지 않으면 예를 들어 봅시다. 명령 줄에 있고 다음을 입력하십시오.

cat body.txt | mail -s "just a test" myfriend@hisdomain.com

G-mail과 같은 외부 SMTP 서버를 통해 전송할 수 있습니까?

"명령 줄에서 Gmail에서 메일을 보내는 방법"을 찾고 있지 않지만 전체 시스템이 특정 SMTP 서버 또는 SMTP 서버의 하나의 계정을 사용하도록 구성하는 옵션을 찾고 있습니다 (보낸 사람 주소를 무시할 수 있음) .


실제로 대부분의 기계를 설정했던 방식입니다. 특정 MTA를 염두에두고 있습니까? 그렇지 않은 경우 (“MTA 란 무엇입니까?”를 포함하여) 어떤 배포를 실행하고 있습니까?
Gilles

우분투 10.04에 있는데 ssmtp 설정에 대한 이 기사 를 찾았 습니다. 대부분의 기계 설정 방법에 대해 더 자세히 설명 할 수 있습니까?
cwd

답변:


71

sSMTP가 사용하기 매우 간단하다는 것을 알았습니다.

데비안 기반 시스템에서 :

apt-get install ssmtp

그런 다음 /etc/ssmtp/ssmtp.conf에서 구성 파일을 편집하십시오.

이메일을 보내기 위해 Gmail을 사용하기위한 샘플 구성 :

# root is the person who gets all mail for userids < 1000
root=your@email.com

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

참고 : 시스템에 "mail"명령이 있는지 확인하십시오. mailutils 패키지는 데비안 기반 시스템에서 이것을 제공해야합니다.

업데이트 : sSMTP가 'space'또는 '#'문자로 된 비밀번호를 허용하지 않는다고보고하는 사람들 (및 다른 Linux 배포판에 대한 버그 보고서)이 있습니다. sSMTP가 작동하지 않는 경우 일 수 있습니다.


2
다른 사람들에게 참고로 ssmtp를 설치 한 다음 mailutils를 설치해야 할 수도 있습니다. mailutils가 mail 명령과 ssmtp 로의 심볼릭 링크를 설정하여 일반적인 mail구문을 사용할 수 있다고 생각 합니다 :)
cwd

1
@cwd 방금 Ubuntu 13.04에서 테스트했습니다. mailutils패키지 를 설치할 필요가 없었으며 자동으로 설치되지 않았습니다. ssmtp즉시 사용 가능
Pijusn

방금 BeagleBone Black의 데비안에서 이것을 성공적으로 사용했으며 mailutils를 먼저 설치해야했습니다.
Dave Nelson

쿠분투 14.04에서는 ssmtp 후에 mailutils 를 설치해야 했습니다 . 그러나 처음 시도했을 때 효과가있었습니다.
MariusMatutiae

6
ssmtp는 현재 데비안, 우분투 및 redhat 릴리스에서 원격 서버의 SSL / TLS 인증서를 확인하지 않으며 인증서의 호스트 이름도 확인하지 않습니다. 이것은 암호화를 효과적으로 쓸모 없게 만들고 암호가 일반 텍스트처럼 전송되고 누구나 스니핑 할 수 있기 때문에 중요한 문제입니다. ssmtp는 2009 년 이후로 개발이 활발하지 않았습니다. 따라서 보내는 전자 메일 서버에 사용하는 전자 메일 계정의 보안에 관심이있는 경우 ssmtp를 사용하지 말고 대신 postfix (또는 다른 것)를 사용하십시오. unix.stackexchange.com/ a / 118101 / 72087
줄라 키스

23

대한 접미사 :

  • 외부 메일 릴레이의 IP를 /etc/hosts추가하고 별명 메일 릴레이를 추가하십시오.
  • 접미사 구성을 수정하십시오.

    relayhost = [mailrelay]
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
    smtp_sasl_security_options = noanonymous
    
  • 편집하다 /etc/postfix/smtp_auth

    mailrelay login:password
    
  • 해시 형식으로 변환

postmap /etc/postfix/smtp_auth

루트만이 이것을 읽을 수 있어야한다고 말할 필요는 없습니다 ... chmod u=r,og=-


9

mailx는 CLI에서 smtp 서버 설정을 지원합니다 ...

echo "message" | mailx -S smtp=$smtphost:$smtpport -s "subject line" -v foo@baa.com

smtp 서버를 사용하여 인증되지 않은 메일을 보낼 수 있다면 아무것도 설치할 필요가 없습니다.

리눅스 박스에있는 소프트웨어의 모든 비트에 대해 smtp 서버를 설정하는 답은 없습니다 . 각 이메일 클라이언트는 SMTP 서버를 구성 할 수 있습니다.


넣어 있는지 확인 -S var=val 하기 전에 받는 사람.
Benoit Duffez

인증되지 않은 메일이 허용되지 않으면 어떻게해야합니까? MAIL 중 클라이언트가 익명 메일을 보내도록 인증되지 않았습니다.
Mian Asbat Ahmad


7

내가 가장 좋아하는 것은 이메일 ( github ) 클라이언트입니다. 정말 간단하고 복잡한 구성이 필요 없으며 종속성이 필요하지 않습니다. 또한 명령 줄을 통해 smtp-server 인수를 지정할 수 있으므로 스크립팅에 더 적합합니다. 유감스럽게도 대부분의 Linux 배포판에는이 도구가 포함되어 있지 않으므로 직접 컴파일해야합니다.

github의 이메일 projet에서 인용

Q : '이메일'이란 무엇입니까?

A : 'email'은 명령 줄을 통해 원격 smtp 서버로 전자 메일을 보내거나 내부적으로 'sendmail'을 사용하고 GNUPG와 완전히 상호 작용하여 전자 메일을 암호화하고 서명하도록 설계된 프로그램입니다. .. 다음 사이트 에서 GNUPG를 얻을 수 있습니다 : http://www.gnupg.org

이 유용한 이메일 클라이언트 를 알려 주신 cygwin 에게 감사드립니다 .

컴파일 및 설치

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

이메일의 명령 행 옵션

$ 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

샘플 사용법

SMTP 서버가 지정된 단순 메일

echo "mail body" | email -subject "unix.stackexchange.com Q36982" -from-name LiuYan刘研 -from-addr liuyan@domain.com -smtp-server smtp.domain.com -smtp-port 25 cwd@your-domain.com your-friends@his-domain.com

HTML 메일

echo "<h1>header</h1><p>paragraph</p>" | email -html -subject "unix.stackexchange.com Q36982 HTML mail" cwd@your-domain.com

첨부 파일

echo "see the attachment(s)" | email -subject "This is my email.conf file" -attach /etc/email/email.conf -attach cwd@your-domain.com

2

페이지 의 지침에 따라 로컬 exim SMTP 서버를 설정 하되 Exim 구성 의 첫 번째 화면 에서 "스마트 호스트가 보낸 메일; 로컬 메일 없음"옵션을 선택하십시오 . 그러면 "mail"또는 "mailx"명령에서 메일을받을 수있는 SMTP 서버가 상자에 설정되고 모든 메시지가 스마트 호스트 (귀하의 경우 Gmail 서버)로 전달됩니다.

Gmail 서버를 통해 발신 이메일을 보내려면 사소한 것이 아닌 Exim대한 TLS 지원 을 설정해야합니다 . 이 하우투는 몇 가지 설명을 제공하고 여기에 Gmail로 특정 자세한 설명과 함께 링크. 이 작업을하려면 몇 시간을 기다려야합니다. Gmail 서버를 통해 보내기 전에 양쪽에서 Exim TLS 구성을 디버깅 할 수 있도록 루트 액세스 권한이있는 TLS 가능 SMTP 서버로 이메일을 발송하는 것이 좋습니다. 통신이 암호화되었으므로 tcpdump와 같은 도구를 사용하여 회선의 프로토콜을 분석 할 수 없습니다.


1

호스트와 외부 smtp 서버 연결이있는 경우 호스트에서 smtp를 구성하고 이메일을 보낼 수 있습니다.

리눅스 단계에서의 STPP 구성은 여기에서 찾을 수 있습니다 : http://kerneltalks.com/config/guide-smtp-configuration-linux/

이메일 comand 예제는 여기에서 찾을 수 있습니다 : http://kerneltalks.com/commands/examples-send-email-through-terminal/


답은 스스로 설 수있는 충분한 세부 사항을 포함해야합니다. 보다 포괄적 인 정보와 링크를 갖는 것은 괜찮지 만, 그것에서 죽은 링크 설정 후 유용 할 수 있도록 링크 된 물질의 적어도 일부는이 질문에 대해 인용되어야한다.
user4556274
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.