포트 587을 통해 이메일 Gmail (smtp.gmail.com)을 보내거나 릴레이하도록 Postfix 구성


9

Postfix와 함께 Centos 5.4 사용. 나는 할 수있다

mail foo@gmail.com 
subject: blah
 test
.
Cc:

그리고 msg는 gmail로 전송되지만 스팸 폴더에 상주합니다.

내 목표는 이메일 메시지를 생성하여 일반받은 편지함에 표시하는 것입니다! Postfix / Gmail을 이해하면 포트 587을 사용하여 인증 된 / 유효한 사용자를 통해 메일을 보내거나 릴레이하도록 Postfix를 구성 할 수 있습니다.이 경우 메일은 더 이상 스팸으로 표시되지 않습니다.

나는 '망에서 다른 사이트 / 기사를 기반으로 많은 매개 변수를 시도했지만 운이 없었습니다. 일부 기사는 실제로 다른 기사와 충돌하는 것 같습니다! 나는 이것에 관한 stacflow 게시물을 살펴 보았지만 여전히 뭔가 빠져 있습니다 ... 또한 IRC (Centos / Postfix)에 관한 소수의 사람들과 이야기를 나누었으며 여전히 질문이 있습니다.

다시 한 번 Serverfault를 사용하고 있습니다!

이 작업을 수행 한 사람이 있다면 main.cf, sasl-passwd 및이 작업을 수행하는 데 사용하는 다른 conf 파일을 게시 하시겠습니까? 구성 파일을 검토 할 수 있다면 문제가 발생한 부분을 확인하고 문제를 해결하는 방법을 찾을 수 있기를 바랍니다.

읽어 주셔서 감사합니다. 제공 한 도움말 / 포인터!

ps, 내가 놓쳤을 수도있는 스택 플로우 게시가 있으면 언제든지 알려주십시오!

-톰

답변:


16

제출 포트 (587)를 사용하여 공급자를 통해 릴레이하려고 시도하지 않았지만 가능해야합니다. Postfix를 릴레이하려면 인증 된 자격 증명으로 파일을 설정하여 구성 파일을 사용하고 수정해야합니다 /etc/postfix/main.cf.

첫 번째는 인증 자격 증명입니다. 이를 위해 나는 단순히 /etc/postfix/sasl_passwd템플릿을 사용하여 적절한 줄을 추가합니다.

smtp.provider.com    smtp_user:smtp_passwd

이 파일이 보호되어 있는지 확인하고 root:root소유권과 0600권한을 설정하는 것이 좋습니다 . 그런 다음 다음을 실행하여 해시 매핑 버전을 루트로 만듭니다.

postmap hash:/etc/postfix/sasl_passwd

이 방법으로주의를 돌리면 /etc/postfix/main.cf이미 설정된 값 중 일부를 찾을 수 있으므로 그에 따라 변경해야하지만 중요한 세부 사항은 다음과 같습니다.

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
smtp_tls_security_level = may

이를 통해 Postfix는 메일을 보낼 때 sasl_passwd 파일을 사용하여 인증 할 수 있습니다. 그런 다음 Postfix에 구성을 추가하여 제공자를 사용하여 메일을 보내야 함을 알려야합니다.

relayhost = smtp.provider.com:port

기본적으로 Postfix는 지정하지 않으면 포트 25를 가정하며 이전에는 저에게 효과적이었습니다. 요청한 설정으로 587을 포트로 지정해야합니다. 그것 으로 나는 기본 포트가 아닌 포트를 통해이 작업을 시도하지 않았기 때문에 sasl_passwd 항목을 smtp.provider.com:587간단하게 수정 해야하는지 확실 smtp.provider.com하지 않다고 스스로 직접 시도해야합니다.

이 구성 단계만으로 중앙 메일 서버를 통해 유지 관리하는 여러 서버에서 메일 전달을 처리합니다.

완전히 작동하는 예제를 포함하도록 업데이트되었습니다.

내 DSL 공급자가 아웃 바운드 포트 25 트래픽을 차단할 때 전자 메일 공급자 (Gmail 아님)에서 포트 587을 사용하도록 Ubuntu (Debian 기반) 랩톱을 구성한 것으로 나타났습니다. 대신 Gmail 계정 중 하나를 사용하여 메일을 보내도록 업데이트했습니다. 내가해야 할 유일한 변화

개인 데이터를 숨기고 있지만 Postfix의 구성을 그대로 붙여 넣습니다 .

먼저 우리는 /etc/postfix/main.cf:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
#smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
#smtpd_use_tls=yes
#smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_security_level = may

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = solitare, localhost.localdomain, , localhost
relayhost = smtp.gmail.com:587
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =

다음으로 우리는 /etc/postfix/sasl_passwd:

smtp.gmail.com:587  myusername@gmail.com:mypassword

그런 다음 다음 SMTP 세션을 실행했습니다.

jbouse@solitare:~$ telnet localhost 25
Trying 127.0.0.1...
Connected to solitare.
Escape character is '^]'.
220 example.com ESMTP Postfix (Ubuntu)
helo localhost
250 example.com
mail from: jbouse@example.com
250 2.1.0 Ok
rcpt to: myotherusername@gmail.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
To: myotherusername@gmail.com
From: jbouse@example.com
Subject: Testing Postfix smarthost via Gmail
this is just a test
.
250 2.0.0 Ok: queued as 6269B280191
quit
221 2.0.0 Bye
Connection closed by foreign host.

그런 다음 myotherusernameGmail 계정에 로그인 하여 메시지를 읽습니다.

Return-Path: <myotherusername@gmail.com>
Received: from example.com (mydslproviderhostname.net [x.x.x.229])
        by mx.google.com with ESMTPS id 6sm401663ywd.11.2010.03.04.19.19.58
        (version=TLSv1/SSLv3 cipher=RC4-MD5);
        Thu, 04 Mar 2010 19:19:58 -0800 (PST)
Sender: "Jeremy Bouse" <myotherusername@gmail.com>
Received: from localhost (solitare [127.0.0.1])
    by example.com (Postfix) with SMTP id 6269B280191
    for <myotherusername@gmail.com>; Thu,  4 Mar 2010 22:17:39 -0500 (EST)
To: myotherusername@gmail.com
From: jbouse@example.com
Subject: Testing Postfix smarthost via Gmail
Message-Id: <20100305031745.6269B280191@example.com>
Date: Thu,  4 Mar 2010 22:17:39 -0500 (EST)

this is just a test

13 년 동안 시스템 관리자가 낭비되지 않았 음을 보여 주면서 다른 사람들이 알 수 있듯이 자체 서명 된 x.509 인증서를 생성 할 필요없이 Gmail을 통해 랩톱에서 이메일을 보내는 이메일을 받았습니다. 받는 열쇠 추가 /etc/postfix/main.cf는 IS smtp_tls_security_level의 설정을 할 수 는 발행 괜찮 후위 말할 STARTTLS의 가 TLS를 지원하는 경우 다른 MTA에 연결할 때 명령을 사용합니다. smtp_tls_security_level 설정 을 잊어 버린 경우 다음 /var/log/mail.log행을 따라 항목이 표시 될 수 있습니다 .

Mar  4 22:10:58 solitare postfix/smtp[19873]: 20E07280191: to=<myotherusername@gmail.com>, relay=smtp.gmail.com[74.125.47.109]:587, delay=38, delays=38/0.03/0.08/0.01, dsn=5.7.0, status=bounced (host smtp.gmail.com[74.125.47.109] said: 530 5.7.0 Must issue a STARTTLS command first. 20sm399188ywh.48 (in reply to MAIL FROM command))

그러나 올바르게 설정하면 다음과 같은 내용이 표시됩니다.

Mar  4 22:20:00 solitare postfix/smtp[20313]: 6269B280191: to=<myotherusername@gmail.com>, relay=smtp.gmail.com[74.125.47.109]:587, delay=141, delays=110/29/0.36/1.9, dsn=2.0.0, status=sent (250 2.0.0 OK 1267759200 6sm401663ywd.11)

제레미 안녕하세요 ... 답장을 보내 주셔서 감사합니다. 몇 가지 질문이 있습니다. smtpd _... params ..가있는 순 게시물을 보았습니다. 필요하지 않습니다. 또한, 기사 중 일부는 TSL 인증을 보유하고 있습니다. 감사!!
톰 스미스

smtpd _... 매개 변수는 Postfix를 서버로 사용합니다 ... 스마트 호스트에 릴레이하는 경우 Postfix는 smtp _... 매개 변수를 사용하는 클라이언트로 작동합니다.
Jeremy Bouse

1
그레이비 페이스, 당신은 분명히 당신이 무슨 말을하는지 모른다. 주제에 대한 지식이 부족하므로 SMTP & TLS / SSL / x.509를 조금 읽어보십시오.
Jeremy Bouse

1
felipe-alfaro.org/blog/2009/05/10/… ... 두 번째 단락은 내 의견을 반영합니다 ...
Jeremy Bouse

1
정리 해줘서 고마워, 제레미 나는 항상 당신이 당신의 자신의 증명서에 서명해야하는 것이 조금 이상하다고 생각했지만, 나의 서둘러서 (그리고 내가 본 많은 기사 / 튜토리얼에서) 그들은 그렇게했다. 살고 배우십시오.
gravyface
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.