<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>заметки на полях &#187; gmail</title>
	<atom:link href="http://svdev.ru/tag/gmail/feed/" rel="self" type="application/rss+xml" />
	<link>http://svdev.ru</link>
	<description>Блокнот разработчика</description>
	<lastBuildDate>Thu, 08 Dec 2011 11:40:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Локальный postfix c релеем на GMail</title>
		<link>http://svdev.ru/blog/local-postfix-gmail-relay/</link>
		<comments>http://svdev.ru/blog/local-postfix-gmail-relay/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 20:55:02 +0000</pubDate>
		<dc:creator>Дерябин Сергей</dc:creator>
				<category><![CDATA[неразобранное]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://svdev.ru/?p=494</guid>
		<description><![CDATA[Почтовые сервера категорически не хотят принимать письма с локальной машины, из-за отсутствия обратной зоны и даже не кладут эти письма в спам &#8211; мочат на корню. Решил использовать GMail в качестве SMTP а для отправки postfix. Приступим. При подключении к gmail используется протокол TLS. Если уже были какие-то попытки настройки и почта не уходила, а [...]]]></description>
			<content:encoded><![CDATA[<p>Почтовые сервера категорически не хотят принимать письма с локальной машины, из-за отсутствия обратной зоны и даже не кладут эти письма в спам &#8211; мочат на корню. Решил использовать <a href="http://www.gmail.com" target="_blank">GMail</a> в качестве SMTP а для отправки <a href="http://www.postfix.org/" target="_blank">postfix</a>. Приступим.<br />
<span id="more-494"></span><br />
При подключении к gmail используется протокол <a href="http://citforum.ru/nets/semenov/6/tls.shtml" target="_blank">TLS</a>. Если уже были какие-то попытки настройки и почта не уходила, а в логе <code class="codecolorer bash default"><span class="bash"><span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>mail.info</span></code> красовалась ошибка:</p>
<blockquote><p>Mar 19 21:51:23 sergey-desktop postfix/smtp[22818]: 9ED5411723F9: to=<mail@example.com>, relay=smtp.gmail.com[209.85.129.111]:587, delay=0.25, delays=0.01/0.01/0.18/0.06, dsn=5.7.0, status=bounced (host smtp.gmail.com[209.85.129.111] said: <strong>530 5.7.0 Must issue a STARTTLS command first</strong>. d13sm2389062fka.32 (in reply to MAIL FROM command))</p></blockquote>
<p>то значит что как раз таки TLS не используется. Блок с настройкой целиком из статьи на <a href="http://opennet.ru/base/net/postfix_pgsql_setup.txt.html" target="_blank">opennet</a> (только тот который TLS, остальное в данном контексте не нужно)  у меня заработал без каких либо проблем.</p>
<p>Для начала нам необходимо создать свой собственный сертификат сервера.</p>
<p>Для этого воспользуемся несколько модифицированным скриптом из поставки Cyrus-IMAP</p>
<div class="codecolorer-container bash vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">#!/bin/sh</span><br />
<span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #660033;">-x</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>openssl <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span><br />
<span style="color: #007800;">prefix</span>=<span style="color: #ff0000;">&quot;/&quot;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>server.pem<br />
<span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp;<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;/etc/ssl/server.pem already exists.&quot;</span><br />
&nbsp;<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span><br />
<span style="color: #000000; font-weight: bold;">fi</span><br />
<br />
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>server.pem<br />
<span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">600</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>server.pem<br />
<span style="color: #c20cb9; font-weight: bold;">chown</span> root <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>server.pem<br />
<br />
cleanup<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span><br />
&nbsp;<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>server.pem<br />
&nbsp;<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>server.rand<br />
&nbsp;<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span><br />
<span style="color: #7a0874; font-weight: bold;">&#125;</span><br />
<br />
<span style="color: #c20cb9; font-weight: bold;">dd</span> <span style="color: #007800;">if</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>urandom <span style="color: #007800;">of</span>=<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>server.rand <span style="color: #007800;">count</span>=<span style="color: #000000;">1</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null<br />
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>openssl req <span style="color: #660033;">-new</span> <span style="color: #660033;">-x509</span> <span style="color: #660033;">-days</span> <span style="color: #000000;">3650</span> <span style="color: #660033;">-nodes</span> <span style="color: #660033;">-config</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>openssl.cnf \<br />
&nbsp;<span style="color: #660033;">-out</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>server.pem <span style="color: #660033;">-keyout</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>server.pem<br />
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>openssl gendh <span style="color: #660033;">-rand</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>server.rand <span style="color: #000000;">512</span> \<br />
&nbsp;<span style="color: #000000; font-weight: bold;">&gt;&gt;/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>server.pem <span style="color: #000000; font-weight: bold;">||</span> cleanup<br />
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>openssl x509 <span style="color: #660033;">-subject</span> <span style="color: #660033;">-dates</span> <span style="color: #660033;">-fingerprint</span> \<br />
&nbsp;<span style="color: #660033;">-noout</span> <span style="color: #660033;">-in</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>server.pem <span style="color: #000000; font-weight: bold;">||</span> cleanup<br />
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>server.rand</div></div>
<p>можете скачать готовый файл: <a href="http://svdev.ru/wp-content/uploads/2010/03/mkcert.sh.tar">mkcert.sh.tar</a></p>
<p>При помощи этого скрипта, мы создаем в директории /etc/ssl самоподписанный сертификат нашего сервера &#8211; server.pem. В процессе создания будет необходимо указать некоторые значения, названия достаточно понятные и я думаю проблем не должно возникнуть. Главное в поле  Common Name (eg, YOUR name) [mail.domain.ru]: указать FQDN вашего почтового сервера, в данном примере: mail.domain.ru. Если имя сервера для отправки/приема почты в настройках почтовой программы не совпадает с указанным в сертификате &#8211; почтовая программа будет <<ругаться>>.</p>
<p>Теперь редактируем файл <code class="codecolorer bash default"><span class="bash"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>main.cf</span></code>, а именно &#8211; добавляем следующие строки:</p>
<div class="codecolorer-container bash vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">smtp_use_tls = <span style="color: #c20cb9; font-weight: bold;">yes</span><br />
smtp_tls_key_file = <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>server.pem<br />
smtp_tls_cert_file = <span style="color: #007800;">$smtp_tls_key_file</span><br />
smtp_tls_CAfile = <span style="color: #007800;">$smtp_tls_key_file</span><br />
smtp_tls_note_starttls_offer = <span style="color: #c20cb9; font-weight: bold;">yes</span><br />
smtp_tls_loglevel = <span style="color: #000000;">0</span><br />
smtpd_tls_auth_only = <span style="color: #c20cb9; font-weight: bold;">yes</span><br />
smtpd_use_tls = <span style="color: #c20cb9; font-weight: bold;">yes</span><br />
smtpd_tls_loglevel = <span style="color: #000000;">0</span><br />
smtpd_tls_received_header = <span style="color: #c20cb9; font-weight: bold;">yes</span><br />
smtpd_tls_session_cache_timeout = 3600s<br />
tls_random_source = dev:<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>urandom<br />
smtpd_tls_key_file = <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssl<span style="color: #000000; font-weight: bold;">/</span>server.pem<br />
smtpd_tls_cert_file = <span style="color: #007800;">$smtpd_tls_key_file</span><br />
smtpd_tls_CAfile = <span style="color: #007800;">$smtpd_tls_key_file</span></div></div>
<p>и в нем же устанавливаем <code class="codecolorer bash default"><span class="bash">relayhost</span></code> и добавляем параметры авторизации</p>
<div class="codecolorer-container bash vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">relayhost = <span style="color: #7a0874; font-weight: bold;">&#91;</span>smtp.gmail.com<span style="color: #7a0874; font-weight: bold;">&#93;</span>:<span style="color: #000000;">587</span><br />
<br />
smtp_sasl_auth_enable = <span style="color: #c20cb9; font-weight: bold;">yes</span><br />
smtp_sasl_password_maps = hash:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>sasl_passwd<br />
smtp_sasl_security_options =</div></div>
<p>Опция <code class="codecolorer bash default"><span class="bash">smtpd_tls_auth_only = <span style="color: #c20cb9; font-weight: bold;">yes</span></span></code> позволяет производить SMTP авторизацию только в режиме TLS.</p>
<p>В <code class="codecolorer bash default"><span class="bash"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>sasl_passwd</span></code> необходимо добавить данные для авторизации на GMail вида</p>
<div class="codecolorer-container bash vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">smtp.gmail.com &nbsp;gmail-login<span style="color: #000000; font-weight: bold;">@</span>gmail.com:password</div></div>
<p>и выполнить</p>
<div class="codecolorer-container bash vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> postmap hash:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>postfix<span style="color: #000000; font-weight: bold;">/</span>sasl_passwd<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>postfix restart</div></div>
<p>В <code class="codecolorer bash default"><span class="bash">php.ini</span></code> проверить настройки отправки почты</p>
<div class="codecolorer-container bash vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">&#91;</span>mail <span style="color: #000000; font-weight: bold;">function</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
...<br />
SMTP = localhost<br />
smtp_port = <span style="color: #000000;">25</span><br />
<br />
; теперь можно закомментировать этот параметр<br />
;sendmail_path =</div></div>
<p>В принципе все &#8211; почта должна уходить из скриптов. Единственный нюанс &#8211; GMail в качестве отправителя подставит учетную запись, которая использовалась при авторизации для отправки. </p>
<p>Есть еще вариант настройки разных релеев, в зависимости от какого аккаунта отправляется почта, подробнее здесь: <a href="http://ubuntu-tutorials.com/2009/03/13/configure-postfix-for-multiple-isp-client-smtp-authentication/" target="_blank">Configure Postfix for Multiple ISP Client SMTP Authentication</a>, ubuntu-tutorials.com (на английском)</p>
]]></content:encoded>
			<wfw:commentRss>http://svdev.ru/blog/local-postfix-gmail-relay/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

