it-swarm.asia

Sendmail'de yerel teslimatı devre dışı bırak

PHP komut dosyaları için e-posta göndermek için Centos sunucusunda Sendmail kullanıyorum, ancak sorun şu ki, posta için MX kayıtlarında belirtilenlerden ziyade makinedeki yerel bir posta kutusuna teslim ediliyor aslında e-posta için kullandığım başka bir makineye işaret ediyor.

Sendmail'in makinenin kurduğu alan adı için yerel olarak posta teslim etmesini istemiyorum, yerel teslimatı devre dışı bırakmanın basit bir yolu var mı?

Etki alanı yerel Ana Bilgisayar-adlar dosyasında değil.

Zaten çok fazla googling yaptım ve baktım:

Yerel makineye posta teslim etmemek için Sendmail Yapılandırması

Sendmail'de yerel teslimatı devre dışı bırak

Ancak ya cevap yoktur ya da uygun değildir.

Başka bir sunucuya geçiş yapmak istemiyorum, sadece etki alanından bağımsız olarak posta göndermesini istiyorum.

Bir örnek vermek gerekirse:

İki sunucum var, biri mail.example.com adresindeki posta sunucusu ve example.com olan bir web sunucusudur, web sunucusunda smtp hizmetini kullandığımda şu anda postayı example.com'daki yerel bir posta kutusuna yönlendirir, ancak mail.example.com adresindeki posta kutularına gidiyor olmalıdır

Sendmail -bt sonuçlarının çıktısı:

 ADRES TEST MODU (kural seti 3 otomatik olarak çağrılmıyor) 
 
> 3,0 [email protected] 
 Girin: info @ example. com 
 Canonify2 girişi: info 
 Canonify2 şunu döndürür: info 
 canonify şunu döndürür: info 
 ayrıştırma girişi: info 
 Ayrıştırma girişi: info 
 Parse0 döndürür: info 
 ParseLocal girdisi: info 
 ParseLocal döndürür: info 
 Parse1 girdisi: info 
 Parse1 döndürür: $ # local $: info 
 ayrıştırma şunu döndürür: $ # local $: info 
31
user6091

Yerel teslimi devre dışı bırakmak için ne yaptım. Example.com alan adını kullanacağım.

Gereksinimler:

  • example.com eth arabirimlerinden birine atanmış IP adresini gösteren bir girdi.
  • / etc/hosts, yukarıdaki ile aynı IP adresine atanan example.com'u tanımlar
  • example.com Google sunucularına (ASPMX.L.GOOGLE.COM vb.) işaret eden MX kayıtları
  • varsayılan sendmail kurulumu (benimki Ubuntu'daydı)

Adımlar:

vim /etc/mail/sendmail.mc

sonunda:

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

ve sonra:

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

test yapmak:

echo -e "To: [email protected]\nSubject: Test\nTest\n" | sendmail -bm -t -v
echo -e "To: user\nSubject: Test\nTest\n" | sendmail -bm -t -v

Google sunucusuna bağlandığını görmeli ve ardından postanızın Google gelen kutunuza teslim edildiğini görmelisiniz.

38

Sporker ve Pawel sayesinde bunu düzeltmek için beni doğru yöne koyuyorsun.

Benim asıl sorun sendmail etki alanı example.com e-posta hesaplarımı yerel hesaplar olarak değerlendiriyordu.

Bu bağlantılar çok faydalı oldu: MX kayıtlarını göz ardı ederek yerel alan adına gönderilen postalar (bölüm 2)http://lists.freebsd.org/pipermail/freebsd-questions/2004-Eylül/057382. htmlhttp://objectmix.com/sendmail/367920-sendmail-ignores-mailertable-some-semilocal-domains.html

Ama benim durumumda, FreeBSD 8.2 kullanarak, hile gerçekten neydi?

# cd /etc/mail

# vim freebsd.mc

Bu iki satırı ekleyin:

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

Hemen önce:

MAILER(local)
MAILER(smtp)

# make

--- Bu çıktı ---

 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

--- Çıktı sonu ---

# cp sendmail.cf sendmail.cf.bak

# cp Host.example.com.cf sendmail.cf

# /etc/rc.d/sendmail restart

Umarım bu birine baş ağrısı getirir.

4
estepix

Ben bir sendmail kişi değilim ama sendmail /etc/mail/local-Host-names yerel alan adları olarak.
Bu dosyayı boşaltmayı deneyebilir (silmeyin) ve sendmail'i yeniden başlatıp nasıl gittiğini görebilirsiniz.

DÜZENLEMEK
Bahsettiğim dosya adı aslında sendmail.cf ve sizinkiler local-Host-names
arama konumu /etc/mail/sendmail.cf için

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

Bu hiçbir şekilde test edilmiş gerçekler değil, sadece yüksek sesle düşünmem.

1
aussielunix

Sadece Pawel'in cevabının benim çok benzer sorunumu çözdüğünü doğrulamak.

FreeBSD kullanan ancak sendmail cf dosya analizine çok fazla dahil olmak istemeyen herkes için, Pawel örneğinde iki satırı eklemek için kullanacağınız şey şu şekildedir:

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
sporker

Sunucunuzu yönetmek için Cpanel/WHM kullanıyorsanız, Yapılandırmayı Otomatik Olarak Algıla yerine Cpanel/WHM'de Uzak Posta Değiştirici'yi seçtiğinizden emin olun. Uzak Posta Değiştirici, yerel e-posta dahil tüm e-postaları MX kayıtları aracılığıyla gönderir. Otomatik ile yerel etki alanı e-postaları doğrudan yerel olarak yönlendirilir ve MX kayıtlarında tanımlanan harici bir sunucuya gönderilmez.

0
Ali Poonawala

Muhtemelen istediğiniz şey değil, ancak SSMTP, bir posta hub'ı belirtebileceğiniz, yalnızca giden bir sunucu için çok güzel.

0
Trevor Harrison

Bu, aradığınız çözüm olmayabilir, ancak sorununuz "yönetici" veya "kök" kullanıcı çok fazla e-posta ve büyük bir posta kutusu alıyorsa, posta kutusunu temizlemek için bir cron işi kurmayı düşünebilirsiniz her hafta, gün vb.

Bu sorunla birkaç CentOS sunucumuz vardı, ancak yakalama, bazen çeşitli sorunları teşhis etmeye yardımcı olabileceğinden, postayı bazen okumak istediğimizdi.

Çözüm işi basitçe cronlamak ve kutuyu arada bir silmekti.

Bir sorun bulursak ... cron işini (geçici olarak) yorumlar ve ipuçlarına ilişkin günlükleri ve e-postaları okurduk.

Sadece bir düşünce ... ve senin için hızlı/kolay bir çözüm.

Değilse, sendmail.mc dosyasına bir göz atın ve buna göre değiştirin.


Hızlı güncelleme:

Bu tam olarak istediğin şey değil ama sana bazı fikirler verebilir ve sizin için bazı şeylere ışık tutmaya yardımcı olabilir:

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

0
KPWINC

Ben şahsen bir postfix kişisiyim, ancak bu gönderme sunucusunu @ alanadiniz.com.tr için posta alacak şekilde yapılandırdığınız gibi görünüyor. Postfix'teki taşıma mekanizmasına eşdeğer bir sendmail varsa, postaları sunucularımın içinden dahili olarak yönlendirmek için kullandığım şey budur.

0
Greeblesnort

Yerel bir adrese teslimat denendiğinde hata döndürmek istiyorsanız, erişim haritasını ve benzeri bir şeyi kullanabilirsiniz:

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

E-posta mesajlarının 'teslim edilmesini' ancak atılmasını istiyorsanız, "@your.domain "ile dev-null. Yerel olarak en az" root "yayınlamaya devam etmek yararlı olabilir, çünkü bu genellikle cron işlerinden vb. e-posta raporlarının alıcısıdır. virtusertable:

[email protected] local:root

@your.domain local:dev-null

Yerel bir dev-null/iletileri/dev/null'a yönlendiren diğer ad.

0
gkeramidas

Ruleset 3'ün alan adı bilgilerini kaldırdığı anlaşılıyor. Aşağıdaki genel sorun giderme adımlarını ekledim. Bu işe yaramazsa, bir göz atmak için bana sendmail.cf adresinizi göndermeniz gerekir.

Çıktıdan example.com yerel etki alanı olarak kabul edilir. nslookup yap:

set q = mx

domain.com

Bu, yerel makinenin ip adresini verirse, dns'nize bakmanız gerekir. Ayrıca domain.com'un listelenmediğinden emin olmak için/etc/hosts dizinine bakın.

Ayrıca @ domain.com'u kaldırmış gibi görünüyor, lütfen yerel bir alan adı olarak listelediğini görmek için [email protected] gibi bir şeyle deneyebilir misiniz?.

Ayrıca sendmail.cf dosyanızdaki Cw değerini kontrol edin.

0

Bu önerileri izledim ve sadece piyonun bahsettiği adımı eklediğini fark ettim,

"/ etc/hosts.com'u yukarıdakiyle aynı IP adresine atanmış olarak tanımlayan", temelde sunucu IP adresimi ve ardından sunucuadı ile /etc/hosts dosyası ve hepsi bu.

Google üzerinden yönlendirilen ve e-postalarıma gönderilen e-postaları almak için yeterliydi.

0
user737133

Pawel'in düzeltmesi benim için çalıştı ama sendmailconfig centosta yoktu bu yüzden koşmak zorunda kaldım

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

yapılandırmayı güncelleştirmek için

0
Joshua Vial