Postfix를 사용하여 Google 계정을 통해 메일을 릴레이하는 방법


9

로컬 Google 이외의 이메일을 개인 Google 계정을 통해 릴레이하고 로컬을 통해 로컬 사용자에게 전달하고 싶습니다. 내 구성은 / etc / postfix / transport입니다.

*            smtp:[smtp.gmail.com]:587

/etc/postfix/main.cf

[root@media postfix]# cat main.cf
# This file contains only the parameters changed from a default install
# see /etc/postfix/main.cf.dist for a commented, fuller version of this file.
transport_maps = hash:/etc/postfix/transport
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_mechanism_filter = plain, login
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes

/ etc / postfix / sasl_passwd :

[smtp.google.com]:587    myuser@gmail.com:mypass

그리고 내가 달린 후에 :

# postmap transport && postmap sasl_passwd
systemctl restart postfix.service

이제 내 서버는 gmail MX에 연결하려고합니다 (성공하지는 않지만 이메일을 로컬로 제공하지는 않습니다)

journalctl의 로그 :

    Jul 06 18:38:01 media postfix/pickup[31431]: 30714960F8: uid=0 from=<root>
    Jul 06 18:38:01 media postfix/cleanup[31641]: 30714960F8: message- id=<20130706163801.30714960F8@media.localdomain>
    Jul 06 18:38:01 media postfix/qmgr[31432]: 30714960F8: from=<root@media.localdomain>, size=436, nrcpt=1 (queue active)
    Jul 06 18:38:01 media postfix/smtp[31643]: connect to smtp.gmail.com[2a00:1450:4008:c01::6c]:587: Network is unreachable
   Jul 06 18:38:01 media postfix/smtp[31643]: 30714960F8: to=<mackowiakp23@gmail.com>, relay=smtp.gmail.com[173.194.69.108]:587, delay=0.7, delays=0.03/0.04/0.55/0.07, ...M command))
    Jul 06 18:38:02 media postfix/cleanup[31641]: 0B85D960F9: message-id=<20130706163802.0B85D960F9@media.localdomain>
    Jul 06 18:38:02 media postfix/qmgr[31432]: 0B85D960F9: from=<>, size=2555, nrcpt=1 (queue active)
    Jul 06 18:38:02 media postfix/bounce[31646]: 30714960F8: sender non-delivery notification: 0B85D960F9
    Jul 06 18:38:02 media postfix/qmgr[31432]: 30714960F8: removed
    Jul 06 18:38:02 media postfix/smtp[31643]: connect to smtp.gmail.com[2a00:1450:4008:c01::6d]:587: Network is unreachable
    Jul 06 18:38:02 media postfix/smtp[31643]: 0B85D960F9: to=<root@media.localdomain>, relay=smtp.gmail.com[173.194.69.109]:587, delay=0.59, delays=0.02/0.01/0.51/0.06,...M command))
    Jul 06 18:38:02 media postfix/qmgr[31432]: 0B85D960F9: removed
    Jul 06 18:38:40 media auth[31778]: pam_tcb(dovecot:auth): Authentication passed for media from (uid=0)
    Jul 06 18:38:40 media dovecot[1442]: pop3-login: Login: user=<media>, method=PLAIN, rip=192.168.0.2, lip=192.168.0.7, mpid=31779, secured, session=<VZaXcdrgpADAqAAC>
    Jul 06 18:38:40 media dovecot[1442]: pop3(media): Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0
    Jul 06 18:38:58 media postfix/pickup[31431]: CD15D960F8: uid=0 from=<root>
    Jul 06 18:38:58 media postfix/cleanup[31641]: CD15D960F8: message-id=<20130706163858.CD15D960F8@media.localdomain>
    Jul 06 18:38:58 media postfix/qmgr[31432]: CD15D960F8: from=<root@media.localdomain>, size=430, nrcpt=1 (queue active)
    Jul 06 18:38:59 media postfix/smtp[31643]: CD15D960F8: to=<mackowiakp@op.pl>, relay=smtp.gmail.com[173.194.69.108]:587, delay=0.63, delays=0.02/0/0.54/0.06, dsn=5.5....M command))
    Jul 06 18:38:59 media postfix/cleanup[31641]: BAB0E960F9: message-id=<20130706163859.BAB0E960F9@media.localdomain>
    Jul 06 18:38:59 media postfix/qmgr[31432]: BAB0E960F9: from=<>, size=2541, nrcpt=1 (queue active)
    Jul 06 18:38:59 media postfix/bounce[31646]: CD15D960F8: sender non-delivery notification: BAB0E960F9
    Jul 06 18:38:59 media postfix/qmgr[31432]: CD15D960F8: removed
Jul 06 18:39:00 media postfix/smtp[31643]: BAB0E960F9: to=<root@media.localdomain>, relay=smtp.gmail.com[173.194.69.109]:587, delay=0.66, delays=0.02/0.01/0.56/0.07,...M command))
    Jul 06 18:39:00 media postfix/qmgr[31432]: BAB0E960F9: removed

작동시키는 데 도움이 필요하십니까?


별표가 실제로 / etc / postfix / transport에 있습니까, 아니면 실수로 질문에 추가 된 것입니까?
CVn

답변:


5

TLSGoogle에서 요구하기 때문에 Postfix의 SMTP 클라이언트에서 활성화 해야합니다. 이것은 메시지에 표시되어 있습니다 Must issue a STARTTLS command.

에서 /etc/postfix/main.cf다음과 같은 것을 원합니다.

smtp_tls_policy_maps = hash:/etc/postfix/tls_policy

그리고 /etc/postfix/tls_policy:

[smtp.gmail.com]:587 encrypt

의 왼쪽 tls_policy은의 릴레이 호스트 항목과 정확히 동일해야합니다 main.cf.

필요 postmap/etc/postfix/tls_policy따라 작성 또는 변경 한 후에 실행 해야합니다.

Postfix의 TLS 문서에서 자세한 내용을 찾을 수 있습니다.

이 링크를 참조하십시오

http://blog.bigdinosaur.org/postfix-gmail-and-you/

http://www.postfix.org/TLS_README.html#client_tls


2

이것이 내가 사용하는 절차입니다.

sudo apt-get install postfix.

어떤 종류의 메일 서버가 설치되어 있는지 묻는다면 구성 없음 (첫 번째 옵션)을 선택하십시오.

sudo nano /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
# listen on localhost only
inet_interfaces = 127.0.0.1

smtpd_banner = $myhostname ESMTP $mail_name

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

relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous

파일을 저장합니다. 이제 사용자 이름과 비밀번호를 사용하여 파일을 만듭니다.

sudo nano /etc/postfix/sasl_passwd

필요한 교체품을 다음에 붙여 넣습니다.

[smtp.gmail.com]:587    user.name@gmail.com:password

저장하고 명령 프롬프트에서

sudo postmap /etc/postfix/sasl_passwd

그때

chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

드디어,

sudo service postfix restart

이메일 시스템을 성공적으로 테스트 한 후 sasl_passwd에서 비밀번호를 제거 / 난독 처리 할 수 ​​있습니다.

응용 프로그램으로 테스트하십시오. 문제가있는 경우 /var/log/mail.log를 확인하십시오. mail-utils를 설치하여 메일 프로그램을 설치하도록 apt-get 할 수 있습니다. 그런 다음 테스트 할 수 있습니다

echo “this is a test” | mailx -s “This is the subject” destination@example.com

드디어

운영

newaliases

/etc/aliases.db 파일을 만듭니다. 그렇지 않으면 /var/log/mail.err에 많은 오류를 기록합니다. SASL 오류 (접두사)가 표시되는 경우 호스트 이름이 / etc / hosts 및 / etc / hostname에 있는지 확인하십시오. postfix가 지정된 호스트 / IP 주소 (postfix)에 대해 릴레이 할 수 있음 /etc/postfix/main.cf에 추가

mynetworks = 10.0.0.0/8

이렇게하면 10.0.0.0 주소를 가진 사람은 누구나 연결할 수 있습니다. 네트워크를 제한하거나 사용 가능한 방화벽 또는 보안 정책을 사용하여 최대한 많이 볼트로 연결해야합니다.


확인. 고마워. 그러나 /etc/ssl/certs/Equifax_Secure_CA.pem 인증서를 만들거나 얻는 데 사용하는 것은 무엇입니까?
mackowiakp

내 실수, 당신은 그 라인이 필요하지 않아야합니다. 위 내용을 반영하여 위의 게시물을 수정했습니다
GeoSword

정보를 얻었습니다 : <test.user@domain.com> : host smtp.gmail.com [173.194.69.109]는 다음과 같이 말했습니다 : 530-5.5.1 인증이 필요합니다. 530 5.5.1에서 자세히 알아보기 support.google.com/mail/bin/answer.py?answer=14257 fc7sm2465531bkc.3-gsmtp (MAIL FROM 명령에 대한 회신)-이러한 구성에서 MAIL FROM은 릴레이 정의에 포함되어야합니다. . 어떻게하니?
mackowiakp

오 s * & ^ * t! / etc / postfix / sasl_passwd에서 [smtp.gmail.com] : 587 대신 [smtp.google.com] : 587이었습니다. 때로는 이러한 간단한 오류를 찾기가 너무 어렵습니다. 고마워! 공장!
mackowiakp

1

먼저, 먼저 Google의 인증 방법을 확인하십시오.

https://www.google.com/settings/security/lesssecureapps

계정에서 해당 페이지를 사용할 수없는 경우 도메인 관리자는 모든 사용자에 대해이 설정을 비활성화합니다 (기본값).

Google 관리자의 Relay SMTP에서 IP / 범위를 허용 목록에 추가하면이 설정으로 이메일을 보낼 수 있습니다

relayhost = [smtp-relay.gmail.com]:587
smtp_use_tls = yes
smtp_tls_loglevel=1
smtp_tls_security_level=encrypt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = login, plain
smtp_tls_CApath = /etc/ssl/certs
smtp_sasl_tls_security_options = noanonymous

그러나 Allow less secure apps: OFF항상이 메시지가 나타 났을 때 :

(SASL authentication failed; server smtp-relay.gmail.com[173.194.204.28] said: 534-5.7.14
... Please log in via your web browser and?534-5.7.14 then try again.?534-5.7.14
Learn more at?534 5.7.14  https://support.google.com/mail/answer/78754 g133sm1077601qkb.1 - gsmtp)

그러나 메시지가 수신자에게 메시지를 가져 오는 데 시간이 조금 더 걸렸지 만 여전히 조금 이상했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.