Удалить apache @ localhost из заголовков писем?


11

Моя установка: я запускаю веб-сайт Magento на сервере Amazon Linux (который, по-видимому, в основном CentOS) с веб-сервером Apache. Я также использую Google Apps для управления почтой mydomain.com.

Мне удалось успешно настроить записи MX, SPF и DKIM для сервера и заставить их работать, так что я получаю «Pass» для SPF и DKIM при отправке электронных писем. Тем не менее, я столкнулся со странной проблемой, которую, похоже, не могу обойти - часть заголовка писем, которые я посылаю, кажется, всегда говорит:

Received: (from apache@localhost) by mydomain.com 

Я искал высоко и низко способ изменить это, чтобы использовать вместо него «mail@mydomain.com», но я просто не могу понять это.

Среди вещей, которые я пробовал:

  • Изменение php.ini, чтобы сказать: / usr / sbin / sendmail -t -i -f mail@mydomain.com
  • Добавление к виртуальному хосту mydomain.conf строки: ServerAdmin mail@mydomain.com
  • Для параметра Return-Path установлено значение «Да» в бэкенде Magento (Система -> Конфигурация -> Дополнительно -> Система -> Настройки отправки почты.

Если это поможет, содержимое моего файла / etc / hosts выглядит следующим образом:

127.0.0.1   www.mydomain.com
127.0.0.1   mydomain.com
127.0.0.1   localhost localhost.localdomain

Для последней строки файла hosts я также попробовал вариант ...

127.0.0.1   localhost.localdomain mydomain.com

... но это все равно не сработало.

Я подумал, что это также может помочь, если я добавлю заголовки письма, в случае, если это может дать некоторые подсказки о том, что может происходить (я изменил много значений, чтобы сделать его обобщенным).

Delivered-To: zerowing@email.com
Received: by 123.123.123.123 with SMTP id abcdefg123456790;
        Fri, 3 Apr 2015 08:35:04 -0700 (PDT)
X-Received: by 456.456.456.456 with SMTP id asdfqwerhjkl234hjkl.789.78909876789;
        Fri, 03 Apr 2015 08:35:03 -0700 (PDT)
Return-Path: <mail@mydomain.com>
Received: from mydomain.com (ec2-11-11-111-11.amazonaws.com. [66.66.777.77])
        by mx.google.com with ESMTPS id asdkfjhkjdfha839383.105.2015.04.03.08.35.02
        for <zerowing@email.com>
        (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Fri, 03 Apr 2015 08:35:03 -0700 (PDT)
Received-SPF: pass (google.com: domain of mail@mydomain.com designates 66.66.777.77 as permitted sender) client-ip=66.66.777.77;
Authentication-Results: mx.google.com;
       spf=pass (google.com: domain of mail@mydomain.com designates 66.66.777.77 as permitted sender) smtp.mail=mail@mydomain.com;
       dkim=pass header.i=@mydomain.com
Received: from mydomain.com (www.mydomain.com [127.0.0.1])
    by mydomain.com (8.14.4/8.14.4) with ESMTP id t33FZ29p004251
    for <zerowing@email.com>; Fri, 3 Apr 2015 15:35:02 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mydomain.com;
    s=default; t=fjIFDJF9049;
    bh=fjO4J4f09j409JF04J909f4j904JF940F9/Y=;
    h=To:Subject:From:Date;
    b=F4J90FJ490j09j490FJ094J0j94f90j409j490Jf90j904JF09j490fj904jf094J
     f09J40F9J904fj049J099j49J049J0FJijffjdlfjldkDLFJKLdjflEJFOIJFOEIEO
     JF9JF049j409j0F094J09FJ049jf049j=
Received: (from apache@localhost) <----------- THIS IS WHAT I'M TRYING TO CHANGE
    by mydomain.com (8.14.4/8.14.4/Submit) id fkdjfljlfsra39393;
    Fri, 3 Apr 2015 15:35:01 GMT
Message-Id: <201504031535.fkdjfljlfsra39393@mydomain.com>
To: =?utf-8?B?Sm9lIEdhcmNpYQ==?= <zerowing@email.com>
Subject: =?utf-8?B?VGVzdCBOZXdzbGV0dGVyLCBwbGVhc2UgaWdub3Jl?=
X-PHP-Originating-Script: 48:Sendmail.php
From: "mydomain.com" <mail@mydomain.com>
Date: Fri, 03 Apr 2015 15:35:01 +0000
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
MIME-Version: 1.0

Часть меня не уверена, нормально ли это, и я не уверена, что может вызвать появление apache @ localhost, но если у кого-то есть идея, это будет высоко оценено, спасибо!

Редактировать MTA, который я использую - Sendmail. Вот изменения конфигурации, которые я внес в файл sendmail.mc для размещения на моем сайте.

MASQUERADE_AS(`mydomain.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@127.0.0.1')
define(`confCW_FILE', `/etc/mail/local-host-names')dnl
dnl define(`confDOMAIN_NAME', `mydomain.com')dnl

Редактировать Я не уверен, что этот вопрос снова был помечен как дубликат, поэтому я подумал, что должен подчеркнуть причину, почему он не основан на упомянутом вопросе, почему это не так. Переход на Postfix - это не решение, а скорее обходной путь. Я не хотел бы выкорчевать всю настройку, которую я сделал с Sendmail до сих пор, только чтобы столкнуться с другими потенциальными проблемами, пытающимися заставить Postfix работать вместо этого. Я также уже упоминал о редактировании команды sendmail в php.ini, если вы прочитали пункты, упомянутые выше.

Править Я подумал, что мог бы также упомянуть некоторые другие вещи, которые я пытался сделать, которые не работали. Я добавил в свой sendmail.mc следующие строки:

FEATURE(`genericstable',`hash -o /etc/mail/genericstable.db')dnl
GENERICS_DOMAIN_FILE(`/etc/mail/generics-domains')dnl

Затем я создал файл generics-domains с одной строкой «mydomain.com» внутри. Затем я создал универсальный файл с одной строкой «apache mail@homebrewsupply.com» внутри. Я запустил make в почтовом каталоге, пересоздал файл cf и перезапустил sendmail, но без кубиков.

Я попытался отредактировать файл / etc / aliases. Я попытался изменить строку «apache: root», чтобы сказать «apache: root, mail @ mydomain.com», а также просто «apache: mail@mydomain.com», но это тоже ничего не дало.

Я также попытался добавить в файл / etc / mail / virtuserstable одну строку «apache @ localhost mail@mydomain.com». Это тоже ничего не делало.

Я удивлен тем, как расстраивает то, как это работает должным образом. Я так близок к тому, чтобы получить его там, где он мне нужен, но я, честно говоря, не знаю, где искать замену строки «apache @ localhost».



Ну, во-первых, решения этих вопросов не работают для меня. Первое решение сводится к тому, что «я не мог понять, как заставить sendmail работать, поэтому я сдался и переключился на postfix». Это не решение проблемы, это обходной путь. Второе решение, добавление имени сервера в файл hosts, также не сработало для меня - поэтому, по сути, проблема, с которой я столкнулся, должна быть другой. И я не могу ждать, пока кто-нибудь добавит другие подходящие решения для вопросов старше 2 лет.
Нулевое крыло

Ответы:


4

Адрес электронной почты от - это пользователь демона, который вызвал отправку сообщения (apache) @ имя домена, настроенное в вашем MTA (sendmail или postfix).

Если ваш локальный MTA - postfix, вам нужно изменить настройку myorigin (по умолчанию это настроенное имя хоста. Localhost в этом примере). Этот параметр находится в main.cf (расположение по умолчанию в большинстве дистрибутивов /etc/postfix/main.cf). Просто измените его на доменное имя, с которого вы хотите отправить. Затем перезапустите постфикс.

Конечно, вам может быть проще просто изменить имя хоста сервера в соответствии с желаемым доменом отправки.

Имейте в виду, что если вы собираетесь отправлять электронную почту с этого сервера для этого домена, вы захотите добавить запись SPF DNS, позволяющую это сделать, иначе ваши сообщения, скорее всего, будут сбрасываться фильтрами спама.


Привет, мой MTA на самом деле sendmail, хотя я думаю, что внес все возможные изменения в него, которые можно внести (я постараюсь добавить некоторые из этих изменений в свой вопрос). Не могли бы вы также уточнить «изменение имени хоста сервера в соответствии с желаемым доменом отправки»? Если вы имеете в виду, я должен сделать так, чтобы при вводе «hostname» в командной строке, чтобы он выводил mydomain.com, я уже настроил это. Кроме того, у меня есть набор записей SPF для домена, я упомянул в вопросе, что у меня установлены и работают SPF и DKIM (я вижу проход для обоих в заголовках электронной почты).
Нулевое крыло

Нашел пост, который может помочь предложить следующее: Чтобы изменить адрес конверта "from" в unix, вы указываете опцию "-r" для вашего бинарного файла sendmail. Вы можете сделать это глобально в php.ini, добавив опцию «-r» в командную строку «sendmail_path». источник: stackoverflow.com/questions/5666312/…
Джо,

Я попытался добавить «-r» в «sendmail_path» в моем php.ini, но это, казалось, что-то сломало, так как почта внезапно перестала отправляться с сервера. В частности, я изменил строку на --- sendmail_path = / usr / sbin / sendmail -t -i -r mail@mydomain.com, но она все равно не работала (я пробовал с кавычками и без них, а также сделал Обязательно перезагрузите сервер, но без кубиков, и я не уверен, что мешало ему отправлять электронные письма после этого момента).
Нулевое крыло

3

Просматривая ваш конфиг, кажется, что пропущено несколько битов (и извините за мой синтаксис, я не публикую часто):

Вы, вероятно, захотите добавить параметр конфигурации MASQUERADE_DOMAIN, чтобы использовать MASQUERADE_AS, сопоставляя MASQUERADE_DOMAIN с любым полным доменным именем хоста (hostname -f на большинстве платформ linux). У меня было что-то странное, если их там нет, так что это будет:

MASQUERADE_AS(`mydomain.com')dnl
MASQUERADE_DOMAIN(`fqdnname.internal')dnl

а затем эта строка:

dnl define(`confDOMAIN_NAME', `mydomain.com')dnl

Должно быть действительно

define(`confDOMAIN_NAME', `mydomain.com')dnl

или это будет игнорироваться командами make / hash при обновлении файла sendmail.cf. Этот парень дает отличное объяснение, почему В чем разница между "dnl" и "dnl #" в файле sendmail.mc?

Я все еще пытаюсь избавиться от части "apache" на моем собственном сервере, но я надеюсь, что это немного приблизит вас!


1

Система -> Конфигурация -> Дополнительно -> Система -> Установить путь возврата -> Да

или установите его для электронной почты, которую вы хотите использовать. Только что нашел это сегодня - по-видимому, некоторые письма были отклонены почтовыми серверами со строгими правилами (.edu, .gov ... и т. Д.)


Потраченные впустую часы, пытаясь понять, почему наши записи SPF игнорировались, а электронные письма по-прежнему помечались как поддельные при отправке с нашего сайта нам. Было предчувствие, что заголовок Received-From привел меня сюда. Ваше 30-секундное решение сработало мгновенно и положило конец часам разочарования! Самое простое решение для этой проблемы и Magento на этой странице. Рекомендую сначала попробовать это перед изменением конфигурации вашего сервера.
Эшли Сваттон

Я рекомендую полностью отключить серверную почтовую службу и просто использовать плагин Sparkpost + smtpPro. Работает как шарм с 100 000 писем в месяц бесплатно.
Калвин Клиен

1

Добавить define(`confRECEIVED_HEADER', `internal info removed')dnlв submit.mcгенерировать .cfфайл и перезапустить , sendmailкак обычно.

Важно: файл, который нужно отредактировать, чтобы это работало, есть submit.mc, а НЕ sendmail.mc. Если sendmail.mcвместо этого вы отредактируете файл, то Receivedзаголовок над тем, который вы упомянули, будет изменен (то есть Received: from mydomain.com (www.mydomain.com [127.0.0.1])).

Примечание. Вместо литеральной строки internal info removedвы можете повторно использовать предоставленную информацию, скрывая конфиденциальную, например: by $j id $i; $bполучить by DOMAIN id ID; TIMESTAMP.

Вышеуказанное удалит / заменит информацию после указанного Receivedвами заголовка:

Received: (from apache@localhost) <----------- THIS IS WHAT I'M TRYING TO CHANGE
by mydomain.com (8.14.4/8.14.4/Submit) id fkdjfljlfsra39393;
Fri, 3 Apr 2015 15:35:01 GMT

Смотрите также похожий вопрос: Как удалить версию Received: (от apache @ localhost) и версию sendmail из заголовков

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.