У меня есть сервер Debian Jessie, на котором работает Exim 4, с настройкой GMail в качестве Smarthost. Если я попытаюсь отправить почту с внешнего адреса (например, CanadianLuke@example.com), все будет нормально. Если я отправлю письмо на root
или canadianluke
(локальные имена пользователей), я получаю два сообщения: сообщение, которое я отправил, и электронное письмо, которое GMail автоматически генерирует, говоря, что он не может доставить почту на root@empty
. Мы используем Google Apps для некоммерческих организаций.
Письмо приходит, поэтому я знаю, что это не полностью Exim4, но я не совсем уверен, что это полностью GMail.
Команда, которую я использую для отправки писем на моем терминале: mail root -s Test
Delivery to the following recipient failed permanently:
root@empty
Technical details of permanent failure:
DNS Error: Address resolution of empty. failed: Domain name not found
----- Original message -----
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=MYDOMAIN_COM.20150623.gappssmtp.com; s=20150623;
h=from:to:subject:message-id:date;
bh=YJWMysPl36audKpPjWIG/TOl/JVGuKuq1l4/HEAjxb8=;
b=eIIQpLxw5TFAwnKw4P3gQpKlKbnf9I1PRpzfElBK4m+g+8cu/3z3hBFxMIMdV2Heli
5CDCvVpaxbiqBJBcyeNnJubwyb8pir2CEnkiKaLJVJjTK3fZkpiI0KlTWkjilMnZeTLy
SSzJdu437Bo2ONDY960+SX4cZtUE2p2fMcY7zhm8OTPWvXuDJ+DMoLVMuMfBfR+000dL
ksNXGUD9teGOxYBV5a4c5/SPyeHXY++Pr8AOY+4lU9nt3OIocaozwMGfJOiV0MiiC4MZ
w1UaXPjygFkzywsgjRbGyh483J0r4pS522fTUvz0qzAtMoIWmNOTCzAIulxxSQXb+hlp
HG8Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20130820;
h=x-gm-message-state:from:to:subject:message-id:date;
bh=YJWMysPl36audKpPjWIG/TOl/JVGuKuq1l4/HEAjxb8=;
b=gBolH/1kEUPQVIVrhMhtsOHaBHc9CIbEfqtAru5aJKSgoCst11qOUFQHC+tPrjVuhH
s1JvVw7w6f05543JED9ak2SaQ5o5Iz6oWAkS3Z72MBwBaFlM144d/e4N64OYUG0Df4aR
UDo/ryRdFOZ1WInOrTaoF9BWI/glLCtUPoadpqJ1utk74qEuZE4Ff3as/GjKAE5LXM3O
Me27QYddAMMCdHi2DPtmkiM/3TosQjdaGv1QbGjk/ZS/q1HqdXCbZhjj65PwIiGDRxdk
kw49ybPDjyoIFR5IzHM/vI7P3lC6LkXZq4zEgitBGuafwB52Luvl1jCTxUXZbLiODXko
yDxQ==
X-Gm-Message-State: ALoCoQn4f0bfvp6Tk6pmiVZgxHs/bn8OVKale7+375O8j9UzvWgsYVSltXGIbvQQk5Fxi3DKGh5o
X-Received: by 10.140.94.116 with SMTP id f107mr417247qge.0.1447108430809;
Mon, 09 Nov 2015 14:33:50 -0800 (PST)
Return-Path: <CanadianLuke@example.com>
Received: from example.com ([93.184.216.34])
by smtp.gmail.com with ESMTPSA id 83sm102514qhw.27.2015.11.09.14.33.50
for <root@empty>
(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
Mon, 09 Nov 2015 14:33:50 -0800 (PST)
From: root <CanadianLuke@example.com>
X-Google-Original-From: root <root@empty>
Received: from root by example.com with local (Exim 4.84)
(envelope-from <root@empty>)
id 1Zvv0W-0006Lj-Tf
for root@empty; Mon, 09 Nov 2015 17:33:48 -0500
To: root@empty
Subject: Sup
Message-Id: <E1Zvv0W-0006Lj-Tf@example.com>
Date: Mon, 09 Nov 2015 17:33:48 -0500
Обновить. Получил снова отправить почту, но выдает новую ошибку. Я добавил свое имя пользователя в /etc/aliases
о том, куда отправлять почту как root, и /etc/email-addresses
настроен на отправку адресованной мне почты на мою обычную учетную запись электронной почты (CanadianLuke@example.com).
# more exim4/update-exim4.conf.conf
dc_eximconfig_configtype='smarthost'
dc_other_hostnames=''
dc_local_interfaces='127.0.0.1'
dc_readhost='ex.com'
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='smtp.gmail.com::587'
CFILEMODE='644'
dc_use_split_config='true'
dc_hide_mailname='true'
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'
Теперь письмо отображается как ошибка от root@server.example.com
, все та же ошибка DNS: Address resolution of server.example.com failed: Domain name not found
в Google Apps.
Ниже мой хвост /var/log/exim4/mainlog
, показывая, что почта действительно покидает сервер:
2015-11-12 07:01:01 1ZwqYn-0001oN-2H <= canadianluke@example.com U=root P=local S=2598
2015-11-12 07:01:01 1ZwqYn-0001oN-2H gmail-smtp-msa.l.google.com [2607:f8b0:400c:c06::6d] Network is unreachable
2015-11-12 07:01:02 1ZwqYn-0001oN-2H => root@server.example.com R=smarthost T=remote_smtp_smarthost H=gmail-smtp-msa.l.google.com [74.125.141.108] X=TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128 DN="C=US,ST=California,L=Mountain View,O=Google Inc,CN=smtp.gmail.com" A=plain C="250 2.0.0 OK 1447329663 h144sm1989632vke.26 - gsmtp"
2015-11-12 07:01:02 1ZwqYn-0001oN-2H Completed
Мой /etc/aliases
файл:
# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root: canadianluke
canadianluke: canadianluke@example.com
Вам необходимо настроить exim для добавления вашего домена к неквалифицированным адресам отправителя и получателя («неквалифицированный» означает «у которых еще нет домена»).
В чистом exim, это будет "qualify_domain". Поскольку вы используете debconf, я думаю, что установка содержимого / etc / mailname для вашего домена должна работать.
Тогда у вас есть проблема, что имена пользователей, отправляющих почту извне, должны соответствовать реальным адресам. Ваш "root" пользователь будет отправлять почту, куда вы хотите ее отправить? Обычное решение - сказать, что сервер получает почту только для себя (myserver.example.com). Таким образом, созданная системой почта остается на сервере. Для почты извне принудительно укажите адреса электронной почты источника, используя MUA или MTA. Для Exim (MTA) это называется переписывание отправителяты хочешь что-то вроде
begin rewrite
^mylogin@myserver$ my@email SFf`
Адрес электронной почты корень @ пустой является не действительный адрес электронной почты. Удаленный сервер правильно возвращает сообщение об ошибке.
Адрес электронной почты обычно должен состоять из трех частей, разделенных знаком <@> и точкой <.>
Первая часть обычно представляет собой некоторую форму имени пользователя, но также может быть функцией (продажи, hr) или чем-то еще (если ваш MTA знает, что с ней делать), вторая часть сразу после знака at <@ > - это доменное имя, а последняя часть сразу после точки <.> - это TLD или домен верхнего уровня. Они не могут быть произвольными по понятным причинам.
name@example.com
MTA не знает, куда отправить электронное письмо с пустым адресом root @.
Это может сработать в локальной системе, когда MTA знает, что делать с адресами электронной почты этого конкретного формата, но как только он покинет вашу локальную систему, ему просто будет отказано, и вы получите сообщение об ошибке.
Что вам нужно сделать, так это настроить exim для доставки электронных писем с именем формата @ example (где example - это ваш собственный домен) локально и не пытаться их отправлять, или настроить exim для переписывания таких писем с правильным именем формата @ example .com, а затем отправьте их.
Когда ты бежишь dpkg-reconfigure exim4-config есть вопрос Другие направления, по которым принимается почта: если вы добавляете туда домен (ы), для которых вы хотите, чтобы система была конечным пунктом назначения, то, что вы пытаетесь сделать, должно работать. Но вы можете вручную отредактировать файлы конфигурации.
Поскольку вы говорите, что действительно получаете электронное письмо и получаете сообщение об ошибке от удаленного MTA, возможно, вам просто придется перенастроить exim, чтобы не отправлять такие электронные письма. Вышеупомянутое, я думаю, может позаботиться об этом автоматически.
Также см:
http://tools.ietf.org/html/rfc5321
http://tools.ietf.org/html/rfc2821
Обновление: судя по вашему обновленному вопросу, похоже, вам нужно либо использовать адрес электронной почты в виде user@example.com или зарегистрироваться server.example.com в приложениях Google. Я точно забыл, как это сделать, но знаю, что это можно настроить. Конечно, убедитесь, что DNS для server.example.com настроен правильно.
Что касается вашего последнего комментария, вы пытались добавить следующую строку в / etc / aliases
корень: root@example.com
Это автоматически сообщит exim о перенаправлении почты, предназначенной для учетной записи root в этой системе, для отправки на root@example.com (или даже на root@server.example.com, если вы настроили это в псевдонимах).
Я понял, что основная причина была в том, что @aseq's ответ выше, но я понял, как заставить его не отправлять дополнительное почтовое сообщение от Google Postmaster.
Я следил за руководство по настройке аутентификации GMail с помощью Exim4 в Debian, и он попросил меня "[c] hoose"mail sent by smarthost; received via SMTP or fetchmail
". Это заставило Exim ожидать, что локальные учетные записи будут также отправлять почту, но все, что я хотел, это сообщения, отправленные на мой основной адрес электронной почты.
Это классический пример XY проблема что я должен был знать больше. Я исправил основную проблему, установив exim4 на mail sent by smarthost; no local mail
на первом экране своего dpkg-reconfigure exim4-config
. Перезапустил службу Exim4, и почта заработала нормально!