Налаштуйте Postfix для надсилання / ретрансляції електронної пошти Gmail (smtp.gmail.com) через порт 587


9

Використовуючи Centos 5.4, з Postfix. Я можу зробити

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

і MSG надсилається до gmail, але він знаходиться у папці зі спамом, чого можна очікувати.

Моя мета - можливість генерувати повідомлення електронної пошти та відображати їх у звичайній папці "Вхідні"! Як я розумію, Postfix / Gmail, можна настроїти Postfix для надсилання / ретрансляції пошти через автентифікований / дійсний користувач, використовуючи порт 587, який більше не вважатиме пошту спамом.

Я спробував низку параметрів на основі різних сайтів / статей з мережі, не пощастивши. Деякі статті, здається, суперечать іншим статтям! Я також переглянув публікації у поточному описі щодо цього, але мені все ще щось не вистачає ... Також поговорив з кількома людьми на IRC (Centos / Postfix) і все ще є питання ..

Отже, я знову звертаюся до Serverfault!

Якщо комусь вдалося це зробити, ви б не хотіли розмістити свої main.cf, sasl-passwd та будь-які інші файли конф, які ви використовуєте для роботи цього! Якщо я можу переглянути ваші конфігураційні файли, я сподіваюся побачити, де я накрутився, і зрозуміти, як виправити проблему.

Дякуємо, що прочитали це та будь-яку надану Вам допомогу / покажчики!

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як я раніше не намагався робити це через порт, який не використовується за замовчуванням, тому вам доведеться спробувати це на собі.

Ці кроки налаштування лише обробляють пересилання пошти на декілька серверів, які я підтримую через центральний поштовий сервер.

Оновлено, щоб включити повністю працюючий приклад

Насправді виявляється, я налаштував свій ноутбук Ubuntu (на базі Debian) для використання порту 587 на своєму провайдері електронної пошти (не Gmail), оскільки мій провайдер DSL блокує вихідний порту 25 трафіку. Я оновив, щоб використовувати один із своїх облікових записів 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.

Потім я входжу в myotherusernameобліковий запис Gmail і читаю повідомлення:

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 років як системний адміністратор, не даремно, я надсилаю електронну пошту зі свого ноутбука через Gmail, не маючи потреби генерувати самопідписаний сертифікат x.509, як скажуть вам інші. Ключове доповнення до /etc/postfix/main.cfє smtp_tls_security_level установки для може сказати Postfix , що це нормально оформити STARTTLS команду при підключенні до іншого MTA , якщо він підтримує TLS. Якщо ви забули налаштування 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 _... парами .. Я вважаю, що мені це не потрібно. Крім того, деякі статті містять / посилаються на TSL certs .. Чи потрібно мені взагалі мати справу з цими? Дякую!!
Том Сміт

Параметри smtpd _... призначені для Postfix як сервера ... У випадку ретрансляції на smarthost Postfix працює як клієнт, який використовує параметри smtp _....
Джеремі Бууз

1
gravyface, ти, очевидно, не знаєш, про що ти говориш. Я пропоную вам трохи прочитати на SMTP & TLS / SSL / x.509, оскільки вам не вистачає знань з цього питання.
Джеремі Бууз

1
felipe-alfaro.org/blog/2009/05/10/… ... Другий абзац перегукується з моїми власними коментарями ...
Джеремі Бууз

1
Дякую, що вияснили це, Джеремі. Я завжди вважав, що це дивно, що ти повинен підписати свою власну довідку, але в моїй поспіху (і в багатьох статтях / навчальних посібниках, які я бачив) вони всі сказали, що так роблять. Живи й учись.
gravyface
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.