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


31

PHP betikleri için e-posta göndermek için Centos sunucusundaki Sendmail kullanıyorum, ancak sorun şu ki, posta için alandaki MX kayıtlarında belirtilenlerin yerine makinedeki yerel bir posta kutusuna ulaştırılıyor - bu aslında başka bir makineye işaret ediyor. e-posta için kullanın.

Sendmail’in makinenin kurduğu etki alanı için posta göndermemesini ve yerel olarak gönderilmesini istiyorum, yerel teslimatı devre dışı bırakmanın basit bir yolu var mı?

Etki alanı, yerel ana bilgisayar adlarında değil.

Ben zaten çok fazla googling yaptım ve baktım:

Yerel makineye posta göndermemek için Sendmail Yapılandırması

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

Fakat ya cevap yok ya da uygun değil.

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

Örnek vermek için:

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

Sendmail -bt iadeleri çıktısı:

ADRES TEST MODU (kural 3 otomatik olarak başlatılmaz)
Girmek  
> 3,0 info@example.com
canonify girişi: info @ example. com
Canonify2 girişi: bilgi 
Canonify2 döner: bilgi 
canonify döner: bilgi 
ayrıştırma girişi: bilgi 
Ayrıştırma0 girişi: bilgi 
Ayrıştırma0 döndürür: bilgi 
ParseLocal girişi: bilgi 
ParseLocal döner: bilgi 
Ayrıştırma1 girişi: bilgi 
Ayrıştırma1 döndürür: $ # yerel $: bilgi
ayrıştırma iadeleri: $ # local $: info

stalkr.net/forum/… Gerçekten sonra olduğum şeye en yakın şey gibi görünüyor. Spesifik olarak MAIL_HUB ayarı belirtildi, ancak gerçekte işe yaramadı.

Aşağıdakileri deneyin: sendmail -bt yazın ve sonra da 3.0 kullanici@domin.com yazın. Size birçok yeniden yazma kuralı verecek, sonuncusu size kullanacağı röleyi vermelidir. Lütfen çıktıyı sağlayın.
Francois Wolmarans

Merhaba Francois, çıktıyı eklemek için sorumu düzenledim

Yanıtlar:


37

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

Gereksinimler:

  • example.com Eth arabirimlerinden birine atanan IP adresini gösteren bir giriş.
  • / etc / hosts, yukarıdaki.com ile aynı IP adresine atanmış example.com'u tanımlayan
  • example.com Google sunucularına işaret eden MX kayıtları (ASPMX.L.GOOGLE.COM, vb.)
  • varsayılan sendmail yüklemesi (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: user@example.com\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.


3
Bu mükemmel çalıştı, sadece orada bir merak ediyorum. etki alanı adından sonra.
Rodrigo

Kusursuzca çalıştı!
Filipe Pina

Teşekkürler! Bir süredir bunu düzeltmeye çalışıyorum. Aşağıdakileri yaptım; sendmail'i temizleyin ve yeniden kurun, çalıştırın sendmailconfig, belirttiğiniz satırları ekleyin, sendmailconfigtekrar çalıştırın service sendmail restartve çalışın!
Liam Newmarch

@Rodrigo example.com. sonunda bir nokta olan bir kanonik FQDN'dir. Nokta olmadan example.com göreceli ve bu nedenle kesin değildir, örneğin example.com.alaniniz.org anlamına gelebilir. işletim sistemi ayarlarınıza bağlı olarak. Bu, /etc/passwdveetc/passwd
kubanczyk

4

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

Asıl sorunum, sendmail'in etki alanı example.com e-posta hesaplarımı yerel hesaplar olarak görmesiydi.

Bu bağlantılar çok yararlı olduğu kanıtlanmıştır: Sendmail yerel etki MX kayıtları görmezden (bölüm 2) için http://lists.freebsd.org/pipermail/freebsd-questions/2004-September/057382.html http://objectmix.com/sendmail/ 367920-sendmail-yoksaydıklarınız-mailertable-bazı-semilocal-domains.html

Ama benim durumumda, FreeBSD 8.2 kullanarak, bu gerçekten ne yaptı:

# cd /etc/mail

# vim freebsd.mc

Bu iki satırı ekle:

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ının sonu ---

# cp sendmail.cf sendmail.cf.bak

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

# /etc/rc.d/sendmail restart

Umarım bu birileri için bazı baş ağrıları kurtarır.


1

Sendmail kişisi değilim, ancak sendmail’in /etc/mail/local-host-namesyerel etki alanı adları olarak depolanan herhangi bir etki alanına bakacağına inanıyorum .
Bu dosyayı boşaltmayı deneyebilir, silemezsiniz ve sendmail'i yeniden başlatıp nasıl çalıştığınızı görebilirsiniz.

DÜZENLEME
Aslında ayarlanır söz kütükadı sendmail.cfve sizin için ayarlanmamış olabilir local-host-names
bakmak /etc/mail/sendmail.cfiçin

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

Bu, hiçbir şekilde test edilmiş gerçekleri değil, sadece yüksek sesle düşündüğümü ifade eder.


Evet, bu yüzden etki alanından daha önce bahsetmiştim, yerel host-isimleri dosyasında değil

Üzgünüm, bu bana doğru okumadığım soruları cevaplamayı öğretecek.
aussielunix

Bu sorunu bir süre önce yayan bir Solaris 10 sunucusu üzerinde (100 ya da öylesine yamalı, ancak sorunu yaşayan sadece bir avuç) vardı. Bu düzeltme oldu! Teşekkürler!
Signal15

0

Bu sizin aradığınız çözüm olmayabilir, ancak sorununuz "admin" veya "root" kullanıcısının çok fazla e-posta ve büyük bir posta kutusu almasıysa, posta kutusunu temizlemek için bir cron işi ayarlamayı düşünebilirsiniz. her hafta, gün vb.

Bu konuda birkaç CentOS sunucumuz vardı ancak buradaki sorun bazen postaları okumak, bazen de çeşitli sorunları teşhis etmeye yardımcı olabileceğiydi.

Çözüm basitçe işi cron yapmak ve arada bir kutuyu silmekdi.

Eğer 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 senin için bazı şeylere ışık tutabilir.

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


Üzgünüm, yardımcı olmadı. Tek yapmak istediğim, yerel olarak gönderilen bir posta yok, sendmail neden bu kadar zor yapıyor?

0

Ben şahsen daha çok bir posta eki kişisiyim, ancak bu çok fazla gönderme yapan sunucuyu @ alanadiniz.com adresine posta alacak şekilde yapılandırmışsınız gibi görünüyor. Postfix'deki aktarma mekanizmasına eşdeğer bir sendmail varsa, postaları sunucularım arasında dahili olarak yönlendirmek için kullandığım budur.


Bir centos sendmail yüklemesi için varsayılan olduğu için o kadar çok yapılandırmadım.

0

Kural 3'ün etki alanı bilgilerini çıkardığı gibi görünüyor. Aşağıda bazı genel sorun giderme adımlarını dahil ettim. Bu işe yaramazsa, bana bakmak için bana sendmail.cf göndermek zorunda kalacak.

Çıktıdan itibaren example.com yerel bir etki alanı olarak kabul edildi. Bir nslookup yapın:

q = mx olarak ayarla

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 dosyasına bakın.

Ayrıca @ domain.com'dan sıyrılıyor gibi görünüyor, lütfen onu yerel bir etki alanı olarak listeleip listelemediğini görmek için user@stackoverflow.com gibi bir şey deneyebilir misiniz?

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


Teşekkürler Francois, sendmail iç kullanıcılarını biraz daha iyi anlamaya başladım. Şimdilik işleri çözmek için makinenin ana bilgisayar adını değiştirmeye karar verdim, bu yüzden example.com yerine şu anda www.example.com, yani user@www.example.com için yerel teslimat yapacak. user@example.com değil - bu aşamada benim için tamam bir uzlaşma.

0

Muhtemelen istediğinizi değil, ancak bir posta hub'ını belirtebileceğiniz, yalnızca giden bir sunucu için SSMTP çok hoş.


Teşekkürler, SSMTP'ye bir göz atacağım, hala şimdilik sendmail'i düzeltmeye çalışıyorum.

0

Yerel bir adrese teslimat yapılmaya çalışılırken bir hata döndürmek istiyorsanız, erişim haritasını ve benzeri şeyleri kullanabilirsiniz:

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

E-posta iletilerinin 'teslim edilmesini' ancak atılmasını istiyorsanız, " @your.domain" için her şeyi taklit eden, kullanılamayacak kadar erisebilir bir girdi yükleyebilirsiniz . rootYerel olarak en az " " yayınlamaya devam etmek faydalı olabilir , çünkü bu genellikle cron işlerinden e-posta raporları alıcısıdır. Sizin için virtusertableşöyle bir şey deneyin :

root@your.domain local:root

@your.domain local:dev-null

dev-nullİletileri / dev / null dizinine yönlendiren bir yerel takma adla, bu işlem kök e-posta göndermeye devam etmeli ancak diğer kullanıcılara iletilen iletileri atmalıdır.


0

Pawel tarafından düzeltme benim için çalıştı ama sendmailconfig centos üzerinde yoktu, bu yüzden çalıştırmak 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üncellemek için


bu ikinci kural centOS'umda çalışmıyor / varolmuyor
solsol

0

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

FreeBSD kullanan ancak sendmail cf dosyası angaryalarına fazla dahil olmakla ilgilenmeyen herkes için, aşağıdaki sıra Pawel'in örneğinde iki satırı eklemek için kullanacağınız şeydir:

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

Bu önerileri izledim ve pawel'in bahsettiği adımı eklemenin sadece farkına vardım.

"/ etc / hosts, yukarıdaki ile aynı IP adresine atanmış example.com'u tanımlayan", temel olarak sunucu IP'mi ve ardından sunucuadı ve /etc/hostsdosyaya bir dosya ekledim .

E-postaları google üzerinden yönlendirmek ve e-postalarıma geri döndürmek için yeterli oldu.


0

Sunucunuzu yönetmek için Cpanel / WHM kullanıyorsanız, Konfigürasyonu Otomatik Olarak Tespit Etmek yerine Cpanel / WHM'de Uzak Posta Eşanjörü'nü seçtiğinizden emin olun. Remote Mail Exchanger, tüm e-postaları, yerel etki alanı da dahil olmak üzere 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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.