Exim4'ün Primary_hostname dosyasını bir Debian kutusunda nasıl değiştiririm?


24

Bazı uzak SMTP sunucusu HELO'yu sunucumdan kabul etmeyi reddetmek için posta teslim etmeye çalışıyorum:

504 5.5.2 <localhost>: Helo command rejected: need fully-qualified hostname

Görünüşe göre Exim4 sunucum localhostFQDN'si olarak gönderiyor . Net ve bir çok config dosyasını araştırırken, HELO sırasında FQDN olarak gönderilen değerin primary_hostnamekonfigürasyon değişkeninden alındığını öğrendim .

Sorum şu: Bir Debian sisteminde bu değişkeni değiştirmenin doğru yolu nedir? Ben sadece Exim4 yapılandırma dosyalarının üzerine bir değeri hardcode sanırım, ama IMHO değer eğer daha mantıklı gibi görünüyor automagicallylar karşılık /etc/mailnameveya başka merkezi adı yapılandırma.

Sorumun cevabının Debian wiki'den bu metinde bulunabileceğini hissediyorum :

Exim tarafından EHLO / HELO'da kullanılan isim konfigürasyon seçeneğinden alınmıştır primary_hostname. Debian'ın exim4 varsayılan konfigürasyonu ayarlanmadı primary_hostname. Exim sonra ana bilgisayar adını bulmak için uname () olarak varsayılandır. Bu çağrı yalnızca bir bileşen döndürürse, tam ana bilgisayar adını elde etmek için gethostbyname () veya getipnodebyname () kullanılır.

Exim HELO'ları localhost.localdomain olarak kullanıyorsa, muhtemelen Debian yükleyicisinin bazı sürümleri tarafından oluşturulan yanlış yapılandırılmış / etc / hosts dosyalarına sahipsiniz. Bu durumda, lütfen / etc / hosts dosyasını düzeltin.

Ne yazık ki, tüm bunların ne anlama geldiğini tam olarak bilmek için Linux sunucu yönetimine yeterince aşina değilim :(

Yanıtlar:


21

/ Etc / hosts dosyanızda en az iki kayıt bulunmalıdır. İlk kayıt şu şekilde olmalı:

<IP_ADDRESS> <HOST_FQDN> <HOSTNAME>

ikincisi ise şu şekilde olmalıdır:

127.0.0.1 localhost

Ayrıca / etc / hostname dosyanızın sunucunun FQDN'sini içerdiğinden ve çalışanların FQDN sunucunuzu hostname -fdöndürdüğünden emin olmanız gerekir . Tüm bunların doğru olduğundan emin olursanız ve Exim'i yeniden başlatırsanız, YARDIM'ı doğru görmeye başlamanız gerekir.


Yerel bir makine adından / etc / hostname dosyasını FQDN olarak değiştirdim. hostname -fhala "localhost" u bildirir. Cevabınızdaki / etc / hosts bölümü buggy gibi görünüyor - ilk kez neye benzemesi gerekiyor?
Jørn Schou-Rode,

1
İken hostname -fhala "localhost" bildiriyor, / etc / hostname değişikliği işe yaradı gibi görünüyor - Şimdi benim posta teslim etmek mümkün. Yine de gönderinizin eksik bölümünü görmek istiyorum :)
Jørn Schou-Rode

Hata! Flub biçimlendirme. Sabit :-)
Paul Lathrop

1
/etc/hostnamegenellikle Debian sistemlerinde FQDN içermez, yalnızca kısa ana bilgisayar adıdır.
Josip Rodin

Eh, ilk satır /etc/hostsolabilir 127.0.0.2 mydomain.com myhostname( geridöngü A sınıfı bir ağ olduğundan, 127.0.0.2hem de çalışır 127.0.0.1). Muhtemelen iki satırı bir çizgide birleştirebilirsiniz 127.0.0.1 mydomain.com myhostname localhost, ancak localhostkurallı bir ana bilgisayar adı 127.0.0.1, değil mi? Bunların hepsi ana bilgisayar adınız olduğu için değil, ana bilgisayar adınız olarak FQDN değil. Ayrıca, değişim /etc/hostnamehemen yürürlüğe girmez, yapmanız gerekir hostname myhostname. Veya sunucuyu yeniden başlatın.
x-yuri,

8

Tek bir yapılandırma dosyası kullanıyorsanız, PRIMARY_HOST_NAME değişkenini istediğiniz isme ayarlayın:

Örneğin /etc/exim4/exim4.conf dosyasında:

PRIMARY_HOST_NAME = mybox.mydomain.com

veya MAIN_HARDCODE_PRIMARY_HOSTNAMEsplit dosya yapılandırması kullanıyorsanız update-exim4.conf.conf dosyasında ayarlayın.

Güvende olmak için exim'i yeniden başlatın.


Listelenen ev sahibinin tırnak içinde olamayacağına dair bir not, aksi halde exim HELO 'mybox.mydomain.com', Google’a, belki başkalarına posta göndermeyi kesen gönderir .
mkomarinski

1
Belgelerde bu "PRIMARY_HOST_NAME" değişken adından söz edemiyorum. Bunu nereden buldun?
Josip Rodin

Debian'da update-exim4.confconfig değiştirdikten sonra kaçmalısın. Ve yeniden başlatma genellikle bundan sonra gerekli değildir.
x-yuri

... eximGenel olarak, yeniden yapılandırmadan config değişikliklerini fark etmiş gibi görünüyor. Ama yeniden yüklemenin tartışmayı yeniden yapmamasını düşünüyorum, zira daemon'un yeniden yüklemeye kadar yapılanışı yeniden okumaz. Ardından, sanki kulağa yapmak /etc/exim4/exim4.confsadece içerebilir yukarıdaki çizgiyi , ancak dosyası oluşturmak an, /var/lib/exim4/config.autogeneratedyok sayılır ...
X-yuri

... "Çatallı işlemler Exim, SMTP alma işlemi için başlar veya çalışan sıra yeni yapılandırma dosyasını kullanırken, orijinal ana ex-daemon, eski yapılandırma dosyasını kullanır." Bu nedenle, tek bir yapılandırma dosyası için /etc/exim4/exim4.conf.localmacros, bölmek için en iyisidir /etc/exim4/conf.d/main/000_localmacros( maindir içindeki dosyalar ilk önce işlenir). Ve değişiklik yaptıktan sonra update-exim4.conf+ komutunu çalıştırın systemctl reload exim4.
x-yuri

4

Birincil ana bilgisayar adı exim4'ün yüklenmesi sırasında istenir. Komutu çalıştırabilirsiniz

sudo dpkg-reconfigure exim4-config

tekrar istemleri geçmek için.

Bildiğim kadarıyla, eğer zaten 'split configuration' kullanıyorsanız (/etc/exim4/conf.d altındaki birçok küçük dosya) ve istendiğinde buna bağlı kalmayı tercih ediyorsanız, dpkg-reconfigure herhangi birinin üzerine yazmamalıdır. Mevcut yapılandırma değişikliklerinizi sizden isteyeceği ayarlardan başka, ancak her zaman olduğu gibi, güvende olmak için önce bir yedek almalısınız.


2
Sadece "tek, tam nitelikli etki alanı adı (FQDN) olması gereken [posta adı []] soruyor gibi görünüyor. Ancak, bu ayar zaten doğru ve HELO hala "localhost" diyor gibi görünüyor.
Jørn Schou-Rode

Bahsettiğiniz şey bir posta adı, sürpriz, sürpriz /etc/mailname,. Varsayılan olarak , nitelenmemiş adresleri nitelemek için kullanılır . Sadece kullanıcı adından oluşanlar. Alan adı ekleyerek /etc/mailname. Ortaya çıkan adres Frombaşlıkta kullanılır .
x-yuri

2

primary_hostnameDeğişken sisteminin tam etki alanı adını (FQDN) 'e göre doldurulur. Debian ve ilgili sistemlerde bu, tipik olarak /etc/hostnameve /etc/hostsdosyaların içerikleri kullanılarak oluşturulur . Hostname dosyası kısa sunucu adını (örn içermelidir foo) ve ana dosya çözülmesi bir girdi içermelidir fooiçine foo.bar.baz, yani ana makine adı, etki alanı soneki (normalde bir DNS girdisini eşleşen) ile.

Komuttan çıkış hostname(herhangi bir parametre olmadan) hostname -föncekini döndürür ve çıkış ikincisini döndürür.

Ana bilgisayar adı genellikle yükleme sırasında doldurulur ve ana bilgisayar dosyası, varsayılan yerel ana bilgisayar kayıtlarının yanında içinde başka bir kayda sahip olmak üzere düzenlenebilir - biçiminde olmalıdır:

<IP address> <hostname FQDN> <hostname>

Üç sütun boşluk veya sekme ile ayrılmalıdır, önemli değil. IP adresi, aynı localhost gibi, 127.0.0.1 olabilir, ancak ana bilgisayar adı bölümü, sistem ana bilgisayar adıyla eşleşmiştir ve orta kısım, FQDN olmalıdır, yani, etki alanı sonekine sahip bir ana bilgisayar adı olmalıdır.

Hattın çalıştığını doğrulamak için, çalıştırın hostname -fve sunucunuzun FQDN'sini döndürdüğünü kontrol edin.

Son olarak, Exim'i yeniden başlatın, örneğin:

sudo service exim4 restart

Daha sonra HELO'yu doğru şekilde görmeye başlamalısınız. Değişkeni çalıştırılarak doğrulanabilir:

/usr/sbin/exim4 -bP primary_hostname

(Not: Aslında bunu 2009'dan gelen cevabın bir düzenlemesi olarak yaptım, fakat reddedildi. Başlangıçta düzelttiğim şeyler şunlardır: varsayılan localhost kaydını tekrarlamaya gerek yoktu, sadece ekin ne olacağını açıkla; IP adresi kullanılabilir; FQDN'nin ne olduğunu açıklayın, örneğin kendisinin nasıl doğrulanacağını açıklayın.)


/usr/sbin/exim4 -bP primary_hostnameçalışmıyor HELO ana bilgisayar adını, port25'in kimlik doğrulama denetleyicisine veya orijinalini görebileceğiniz diğer posta kutularına bir test e-postası göndererek doğrulayabilirsiniz . Burada daha fazlası . Cevabınızı güncellemeyi düşünün.
x-yuri

Debian stabil makinemde gayet iyi çalışıyor (esneme). Lütfen sizin için işe yaramadığını tam olarak açıklayabilir misiniz? Adresinden belgeleri Not exim.org/exim-html-current/doc/html/spec_html/... açıkça varsayılan söylüyor helo_dataolduğunu $primary_hostname. Debian sistemlerinde, REMOTE_SMTP_HELO_DATAdeğişkeni kullanarak geçersiz kılabilirsiniz , ancak birincil ana bilgisayar adınızı doğru bir şekilde ayarlarsanız, bu gerekli değildir.
Josip Rodin

Denedim ve tartışmaya girmediğimden şikayetçi oldum. Ama şimdi yeniden oluşturamıyorum, bu yüzden boşver, benim kötü. "Yalnızca ana bilgisayar adınızı doğru ayarlarsanız", ana bilgisayar adının herhangi bir şeyi çözmesi gerektiği genel olarak kabul edilmez . Diyelim ki "eğer hostname'i exim'in beklediği gibi ayarlarsanız ..." diyip şunu bırakalım :)
x-yuri

Üzgünüm, ancak uzun bir debian-devel tartışmasının geçici bir sonucunu 10 yıldan daha uzun bir süre önce yüz değerinden almanın akıllıca olduğunu sanmıyorum. Böyle bir şeyle ilgili bir politika belgesine işaret etseniz daha yararlı olur.
Josip Rodin

Bulabileceğim en iyisi bu. Daha iyi bir şey bulursanız veya kelimelerinizin kanıtını bulursanız, bana söylerseniz memnun olurum. Şimdilik söyleyebileceğim tek şey, bu günlerde bile ana bilgisayar adını yazmayan insanlar olduğu /etc/hosts. Ve tek istediğim, genel olarak kabul edilmeyen bir şeyi uygun olarak çağırmamak.
x-yuri,

1

/ string / hosts dosyasında aynı dizgeyi ekledikten sonra, hostf -f FQDN'nizi döndürür


Başka bir deyişle, myhostnamegider /etc/hostname(takip eder hostname myhostname). Ve 127.0.0.1 mydomain.com myhostname.com localhostgider /etc/hosts. Artı, eximsadece durumda yeniden yükleyin .
x-yuri

0

Bende de aynı problem var. Posta ana bilgisayar adını değiştirmem gerekiyor, çünkü bazı e-postalar gönderildiğinde başarısız oluyor. Bu hatanın nedeni:

host receiver.server.com [200.200.200.200]: 550 <info@sender.server.com>: Sender address rejected: Domain not found

Bu yüzden parayı birincil_konum/etc/exim.config parametresine değiştirdim

Bu dosyanın bazı kodu:

smtp_connect_backlog = 50
smtp_accept_max = 100

#primary_hostname = myhostname.com 
deliver_queue_load_max = 3

Hah, bu yazı bana "Primary_hostname" ile yardımcı olur ve şimdi benim exim her zamankinden daha iyi çalışıyor :)

0

içinde WHM Exoto Yapılandırma Yöneticisi -> Gelişmiş Editör

"Ek yapılandırma ayarları ekle" (büyük mavi düğme) bulana kadar aşağı kaydırın ve tıklayın.

yeni satırda, [birincil_hostname] = [etkialanim.com.tr] ekleyin.

aşağıya doğru kaydırın ve Kaydet'i tıklayın.

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.