Видалення 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
  • Встановлення шляху повернення до "Так" у програмі Magento (Система -> Конфігурація -> Додатково -> Система -> Налаштування відправки пошти.

Якщо це допомагає, вміст мого / etc / hosts файлу є таким:

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

Для останнього рядка файлу хостів я також спробував варіацію ...

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

Частина мене не впевнена, чи нормально це, і я думаю, я не впевнений, що може спричинити появу апачі @ 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-domain з єдиним рядком "mydomain.com" всередині нього. Потім я створив загальний файл із єдиним рядком "apache mail@homebrewsupply.com" всередині нього. Я побіг зробити в каталозі пошти, відтворив файл 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 працювати, тому я відмовився і перейшов на постфікс". Це не вирішення проблеми, це вирішення проблеми. Друге рішення, для додавання імені сервера до файлу хостів, також не працювало для мене --- тому, по суті, проблема, яку я відчуваю, повинна бути іншою. І це не так, як я можу чекати, коли хтось додасть інші працездатні рішення до питань, яким більше 2 років.
Нульове крило

Відповіді:


4

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

Якщо ваш локальний MTA - це постфікс, вам потрібно змінити налаштування myorigin (яке за замовчуванням відповідає налаштованому імені хоста. Localhost у цьому прикладі). Цей параметр знаходиться у main.cf (місце розташування за замовчуванням у більшості дистрибутивів є /etc/postfix/main.cf). Просто змініть це на доменне ім'я, з якого ви хочете його надіслати. Потім перезапустіть постфікс.

Звичайно, вам може бути простіше просто змінити ім'я хоста сервера, щоб відповідати бажаному домену відправки.

Майте на увазі, що якщо ви збираєтеся надсилати електронну пошту з цього сервера для цього домену, ви хочете додати SPF DNS-запис, що дозволяє, інакше ваші повідомлення, ймовірно, потраплять у фільтри спаму.


Привіт, мій MTA - це фактично sendmail, хоча, я думаю, я вніс усі можливі коригування в нього, які можна внести (я спробую додати деякі з цих змін до мого запитання). Чи можете ви також уточнити питання про "зміну імені хоста сервера, щоб він відповідав бажаному домену відправки?" Якщо ви маєте на увазі, я повинен зробити це так, що коли я ввожу "ім'я хоста" в командному рядку, щоб він виводив mydomain.com, у мене вже це налаштовано. Крім того, у мене встановлений запис SPF для домену, я згадував у запитанні, що у мене налаштовані SPF та DKIM і працюють успішно (я бачу пропуск для обох у своїх заголовках електронної пошти).
Нульове крило

Знайдено публікацію, яка може допомогти запропонувати наступне: Щоб змінити конверт "з" адреси на 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 будь-якому FQDN хосту (ім'я хоста -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; $bget 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

Дивіться також подібне запитання: Як видалити Отримане: (від apache @ localhost) та версію sendmail із заголовків

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.