Вимкнути місцеву доставку в Sendmail


31

Я використовую Sendmail на сервері Centos для надсилання електронної пошти для PHP-скриптів, але проблема полягає в тому, що пошта доставляється в локальну поштову скриньку на машині, а не те, що вказано в записах MX для домену - що насправді вказує на іншу машину I використовувати для електронної пошти.

Я хотів би, щоб sendmail не намагався локально доставляти пошту для домену, на який налаштована машина, чи є простий спосіб відключити локальну доставку?

Домен відсутній у файлі локальних імен-хостів.

Я вже зробив багато гугла, і я подивився на:

Конфігурація Sendmail не доставляє пошту на локальну машину

Вимкнути місцеву доставку в Sendmail

Але або відповіді немає, або вона не підходить.

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

Наведіть приклад:

У мене є два сервери, один - поштовий сервер на mail.example.com і веб-сервер, який є example.com, коли я використовую службу smtp на веб-сервері, яка в даний час спрямовує пошту до локальної поштової скриньки на example.com, але він повинен переходити до поштових скриньок на mail.example.com

Вихід повернення sendmail -bt:

РЕЖИМ ТЕСТУВАННЯ АДРЕСИ (набір правил 3 НЕ автоматично викликається)
Введіть  
> 3,0 info@example.com
canonify input: info @ example. ком
Вхід Canonify2: інформація 
Canonify2 повертає: інформацію 
канонізує повернення: інформація 
вхід для розбору: інформація 
Вхід Parse0: інформація 
Parse0 повертає: інформація 
Вхід ParseLocal: інформація 
ParseLocal повертає: інформацію 
Вхід Parse1: інформація 
Parse1 повертає: $ # local $: info
повертає розбір: $ # local $: info

stalkr.net/forum/… Здається, це найближче до того, що я насправді після. Зокрема, згадане налаштування MAIL_HUB, але воно, схоже, не працює.

Спробуйте: Будь ласка, надайте висновок.
Франсуа Вольмаранс

Привіт, Франсуа, я

Відповіді:


37

Що я зробив, щоб відключити місцеву доставку. Я буду використовувати домен example.com.

Вимоги:

  • example.com Запис, що вказує на IP-адресу, призначену одному з et-інтерфейсів.
  • / etc / hosts, визначаючи example.com, призначений для тієї самої IP-адреси, що і вище
  • example.com MX записів, що вказують на сервери Google (ASPMX.L.GOOGLE.COM тощо)
  • установка sendmail за замовчуванням (моя була на Ubuntu)

Кроки:

vim /etc/mail/sendmail.mc

в кінці:

define(`MAIL_HUB', `example.com.')dnl
define(`LOCAL_RELAY', `example.com.')dnl

і потім:

sendmailconfig (or /etc/mail/make depending on your distro)
service sendmail restart

тестування:

echo -e "To: user@example.com\nSubject: Test\nTest\n" | sendmail -bm -t -v
echo -e "To: user\nSubject: Test\nTest\n" | sendmail -bm -t -v

Ви повинні бачити, як він підключається до google-сервера, і тоді ви бачите, що ваша пошта доставляється на вашу поштову скриньку Google.


3
Це працювало ідеально, я просто дивуюсь, що є. після доменного імені.
Родріго

Працювали також бездоганно!
Філіпе Піна

Спасибі! Я деякий час намагався виправити це. Я зробив наступне; очистити та перевстановити sendmail, запустити sendmailconfig, додати вказані рядки, запустити sendmailconfigще раз і зробити, service sendmail restartі це працює!
Ліам Ньюмарш

@Rodrigo example.com. з крапкою крапки є канонічним FQDN. Example.com без крапки є відносним і, таким чином, неточним, наприклад, це може означати example.com.yourdomain.org. залежно від налаштувань вашої ОС. Це точно така ж різниця , як між /etc/passwdіetc/passwd
kubanczyk

4

Завдяки споркеру та Павелу ви направили мене в правильне русло, щоб виправити це.

Моя оригінальна проблема полягала в тому, що sendmail розглядав мій обліковий запис електронної пошти example.com.com як локальний рахунок.

Ці посилання виявились дуже корисними: Sendmail на локальний домен ігноруючи записи MX (частина 2) http://lists.freebsd.org/pipermail/freebsd-questions/2004-September/057382.html http://objectmix.com/sendmail/ 367920-sendmail-ignores-mailertable-some-semilocal-domeins.html

Але в моєму випадку, використовуючи FreeBSD 8.2, справді трюк був:

# cd /etc/mail

# vim freebsd.mc

Додайте ці два рядки:

define(`MAIL_HUB', `example.com.')dnl
define(`LOCAL_RELAY', `example.com.')dnl

Прямо перед цим:

MAILER(local)
MAILER(smtp)

# make

--- Це вихід ---

 cp freebsd.mc host.example.com.mc
 /usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 host.example.com.mc > host.example.com.cf
 cp freebsd.submit.mc host.example.com.submit.mc
 /usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 host.example.com.submit.mc > host.example.com.submit.cf

--- Кінець виходу ---

# cp sendmail.cf sendmail.cf.bak

# cp host.example.com.cf sendmail.cf

# /etc/rc.d/sendmail restart

Сподіваюсь, це рятує від когось головного болю.


1

Я не є особою sendmail, але я вважаю, що sendmail буде розглядати будь-який домен, який зберігається в /etc/mail/local-host-namesякості локальних доменних імен.
Ви можете спробувати видалити цей файл (не видаляйте його) та перезавантажте sendmail і подивіться, як ви йдете.

EDIT
Файл я вже фактично встановлено в sendmail.cfі ваш не може бути встановлений , щоб local-host-names
подивитися в /etc/mail/sendmail.cfпротягом

# file containing names of hosts for which we receive email 
Fw/etc/mail/local-host-names    

Це ні в якому разі не перевірені факти, а просто я думаю вголос.


Так, саме тому я вже згадував про домен не у файлі локальних імен-хостів

Вибачте, це навчить мене відповідати на запитання, які я не прочитав належним чином.
aussielunix

Була ця проблема на наборі нещодавно виправлених серверів Solaris 10 (100 або близько цього виправлених, але лише декілька проблем виникають). Це було виправлення! Спасибі!
Сигнал15

0

Це може бути не шуканим рішенням, але якщо ваша проблема полягає в тому, що користувач "адміністратор" або "root" отримує багато електронних листів і величезну поштову скриньку, ви можете розглянути питання про налаштування завдання для очищення поштової скриньки. щотижня, дня тощо

У нас було кілька серверів CentOS з цією проблемою, але уловлювачем було те, що ми хотіли іноді читати пошту, оскільки це може допомогти діагностувати різні проблеми.

Рішення полягало в тому, щоб просто запустити роботу та протерти коробку раз у раз.

Якщо ми знайшли проблему ... ми б прокоментували роботу cron (тимчасово) та прочитали журнали та електронні листи для підказок.

Просто думка ... і швидке / просте рішення для тебе.

Якщо ні, перегляньте файл sendmail.mc та внесіть відповідні зміни.


Швидке оновлення:

Ви не зовсім про це просите, але може дати вам кілька ідей та допомогти пролити трохи речей для вас:

http://www.pettingers.org/code/sendmail-local.html


Вибачте, що не допомогло. Все, що я хочу зробити, це не мати пошти, яка доставляється локально, чому sendmail робить це так важко?

0

Я особисто більше людина з поштовим кодом, але це дуже схоже на те, що ви налаштували сервер, що відправляє, для отримання пошти на @ yourdomain.com Якщо в Postfix є sendmail, еквівалентний транспортному механізму, саме це я використовую для маршрутизації пошти всередині своїх серверів.


Я не так сильно налаштовував це, як це було за замовчуванням для установки центоса sendmail.

0

Схоже, ваш Ruleset 3 знімає інформацію про домен. Нижче я включив декілька загальних етапів усунення несправностей. Якщо це не працює, вам доведеться надіслати мені ваш sendmail.cf, щоб подивитися.

З виводу, example.com трактується як локальний домен. зробити nslookup:

встановити q = mx

domain.com

Якщо це дає ip-адресу локальної машини, тоді вам потрібно переглянути ваші dns. Також загляньте в / etc / hosts, щоб переконатися, що domain.com не вказаний.

Можливо, ви також знімете @ domain.com, чи можете ви спробувати щось на зразок user@stackoverflow.com, щоб побачити, чи він також містить його як локальний домен.

Також перевірте значення Cw у файлі sendmail.cf.


Дякую Франсуа, я починаю трохи краще розуміти інтернати sendmail. Я вирішив просто змінити ім'я хоста машини, щоб зараз вирішувати речі, тому це зараз www.example.com замість example.com, що означає, що це може зробити локальну доставку для користувача@www.example.com, але не user@example.com - це для мене нормальний компроміс на цьому етапі.

0

Напевно, не те, що потрібно, але SSMTP дуже приємний для вихідного сервера, де ви можете вказати поштовий концентратор.


Дякую, я погляну SSMTP, але все ще намагаюся виправити sendmail.

0

Якщо ви хочете повернути помилку під час спроби доставки на локальну адресу, ви можете використовувати карту доступу та щось подібне:

@your.domain error:nouser 550 No such user here

Якщо ви хочете, щоб повідомлення електронної пошти були "доставлені", але були викинуті, ви можете встановити віртуальний запис, який " @your.domain" псевдоніми має все для " " dev-null. Можливо, буде корисно продовжувати доставку принаймні " root" локально, тому що це часто одержувач електронних повідомлень із завдань cron тощо. Спробуйте щось подібне у вашому virtusertable:

root@your.domain local:root

@your.domain local:dev-null

З локальним dev-nullпсевдонімом, який перенаправляє повідомлення до / dev / null, він повинен продовжувати надсилати кореневу електронну пошту, але викидати повідомлення, доставлені іншим користувачам.


0

Виправлення Pawel працювало на мене, але sendmailconfig не існувало на центсі, тому мені довелося запустити

cd /etc/mail    
m4 /usr/share/sendmail-cf/m4/cf.m4 sendmail.mc > sendmail.cf
service sendmail restart

щоб оновити конфігурацію


це друге правило не працює / існує в моєму центОС
solsol

0

Тільки підтверджуючи, що відповідь Павла вирішив мою дуже подібну проблему.

Для тих, хто використовує FreeBSD, але не зацікавлений занадто активно брати участь у друкуванні файлів sendmail cf, наступною послідовністю ви користуєтесь, щоб додати два рядки у прикладі Павла:

cd /etc/mail
make conf (generates stock .mc/.cf files with the hostname as part of the 
filename - these will NOT be overriten during an upgrade)
vi hostname.mc
(add the two lines to the .mc file right above the last two "MAILER" lines)
make conf
cp hostname.cf sendmail.cf
/etc/rc.d/sendmail restart

0

Я дотримувався цих пропозицій і помітив, що лише додаючи крок, про який згадував Павел,

"/ etc / hosts, що визначає example.com, призначений для тієї самої IP-адреси, що і вище", я в основному додав у /etc/hostsфайл свій IP-сервер, а потім ім'я сервера , і все.

Мені було достатньо, щоб електронні листи були перенаправлені через Google і назад до моїх листів.


0

Якщо ви використовуєте Cpanel / WHM для управління своїм сервером, переконайтесь, що ви вибрали віддалений обмінник пошти в Cpanel / WHM замість автоматичного визначення конфігурації. Віддалений обмінник пошти надсилатиме всю електронну пошту через записи MX, включаючи локальний домен. При автоматичному режимі електронна пошта локального домену буде безпосередньо переадресована локально і не надсилатиметься на зовнішній сервер, визначений у записах MX.

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