Windows Server 2012'de IIS SMTP sunucusunun yerine ne geçiyor


30

Notları burada okudum http://technet.microsoft.com/en-us/library/hh831568.aspx , Windows 2012'deki kullanım dışı ve kaldırılmış özelliklerle ilgili ve SMTP'nin kullanımdan kaldırıldığını söylüyor. Bunun IIS SMTP sunucusuna gönderme yaptığını varsayıyorum. Tavsiyeler bunun yerine System.Net.Smtp kullanmaktır, ancak bunun yanlış bir baskı olduğunu kabul ediyorum, çünkü başka bir yerde System.Net.Smtp adında hiçbir şey bulamıyorum.

Aslında System.Net.Mail demek istiyorlarsa, bu yalnızca bir API'dir ve bir API'nin bir sunucu işleminin yerini aldığını göremiyorum. 25 numaralı bağlantı noktasındaki bağlantıları kabul eden ve e-postayı eskiden IIS SMTP gibi bir hedefe yönlendiren bir servise ihtiyacım var.

Buradaki durumu netleştirmek için lütfen biri var mı? Eğer onun yerine Exchange konulduğunu söyleselerdi, onlara lanet ederdim ama en azından şu anki ifadeyi kesinlikle yapmazdı.

Yanıtlar:


19

Microsoft'tan başvurulan ifadenin sadece korkunç ve tamamen kafa karıştırıcı olduğunu ve SMTP sunucusunun nasıl çalıştığı hakkında kimin bir fikri olduğunu sanmıyorum. Neden onaylanmadığını veya yanlış bir şey olup olmadığını açıklamıyor. Belki de güvenlik sorunları ya da arabellek taşması sorunu var, ancak halka açık bir limanda ifşa etmiyorsanız kullanmaktan çekinmeyeceğim.

İşte yaptığım şey:

  • IIS'de alanın işaret etmesi için 'SMTP E-posta'yı kurdum 10.0.0.1. Bunu ana klasörde konuşlandırılmış sitelere yapıyorum yoksa yeniden konuşlandırdığınızda siliniyor. İsterseniz doğrudan web.config içine koyabilirsiniz ancak bu şekilde daha az esnek hale getirebilirsiniz.
  • SMTP Sunucusunda (IIS6 Yönetim Konsolu ile) bir SMTP sunucusu kurdum 10.0.0.1. Açıkçası bu daha önce de söylediğim gibi kamuya açık internette açık değil.
  • Ben bu sunucuyu yapılandırmak Akıllı Host ile röle aracılığıyla smtp.gmail.comveyasmtp.live.com
  • .NET uygulamamda, posta kullanarak bir API kullanarak mesaj göndermek için API kullanıyorum new SmtpClient(). Bu, yapılandırmayı IIS'den alır ve postayı adresindeki SMTP sunucuma gönderir.10.0.0.1
  • Bir posta gönderdiğimde anında geri döner çünkü yerel postaya gönderiliyor

  • Şimdi bu, anlaşılmayan ve kendi başına 'System.Net.Smtp' yerine geçmeyen yerel bir SMTP sunucusu kullanmanın önemli yararıdır :

    • SMTP sunucusu postayı sizin için smarthost üzerinden iletmeye çalışacak ve hemen gönderemezse daha sonra yeniden deneyecektir.
    • Bazen smtp.gmail.comcevap bile vermeyeceğini veya belki de ağınızın kapalı olduğunu anlamak önemlidir . (Doğrudan doğrudan posta göndermeyi denediğimde şaşırtıcı derecede yaygındı)
    • Mesajları saklamak için bir ara SMTP sunucusu olmadan sadece .NET'ten 'gönderip unutamazsınız' ve tüm bunları sizin için yapan bir SMTP sunucusuyla tamamen gereksiz olan bir çeşit yeniden deneme mekanizmasını çözmeniz gerekir.
    • SMTP aktarma sınırınız varsa (ISS / GMail'inizde), SMTP sunucusunun tekrar denemeye devam edeceğini ve mesajları ertesi gün göndereceğine inanıyorum - günden güne tutarsız trafik çekiyorsanız veya sınırsız vurursanız fark.

Devam et ve kullan. Microsoft bir değiştirme sağlamamıştır ve ücretsizdir, neden olmasın. 'Onaylanmadı', değiştirilmemesi durumunda bence hiçbir şey ifade etmiyor.

Feragatname: Hala Server 2008'deyim ama tüm bunların hala geçerli olduğunu varsayıyorum.


4
Evet, aynısı hala Windows Server 2012 için de geçerlidir. İletileri sıraya almak için yerel bir SMTP sunucusu kullanmanın avantajını fark eden çok az insan bulmak her zaman şaşırttı!
Richard,

1
Kuyruğa ek olarak, SMTP sunucusu günlüğe kaydetmenizi sağlar IIS 8. 0'daki SMTP yapılandırması bildiğim kadarıyla herhangi bir günlük sunmuyor. SMTP sunucusuna IIS 6 aracılığıyla ekleriz ve IIS 8.5'e yalnızca W3C günlük dosyalarını almak için localhost'a bağlanmasını söyleriz.
Bacon

14

Web Sunucusu rolünün SMTP özelliği kullanımdan kaldırıldı, ancak kaldırılmadı. Yükleyebilir ve kullanabilirsiniz, ancak başka bir (harici) SMTP sunucusu kullanmanız önerilir.

SMTP ve ilgili yönetim araçları kullanımdan kaldırılmıştır. İşlevsellik hala Windows Server 2012'de mevcut olsa da, System.Net.Smtp'yi kullanmaya başlamanız gerekir. Bu API ile, alma için bir dosyaya mesaj ekleyemezsiniz; bunun yerine Web uygulamalarını SMTP kullanarak başka bir sunucuya 25 numaralı bağlantı noktasına bağlanacak şekilde yapılandırın.

Gelecekte, Windows ServerX üzerinde çalışan Web uygulamalarına SMTP hizmetleri sağlamak için ayrı bir SMTP sunucusu kuracak ve kullanacaksınız.


4

Bağlandığınız makaledeki bu açıklama korkunç! Ama işte sana anlatmaya çalıştığı şey:

Windows'un önceki sürümlerinde IIS SMTP'yi açmak iki şey yaptı:

  1. Bir IIS SMTP sunucusu başlatıldı.
  2. Mesaj göndermek için programlama kütüphaneleri (COM nesneleri vb.) Eklendi.

Herhangi bir yapılandırmaya sahip olmayan bu kütüphaneleri kullandıysanız, yerel IIS SMTP sunucusuna gönderirlerdi. Programcılar doğası gereği tembeldir, bu yüzden en az çaba ile çalıştığından, yaptıkları şey buydu. Birçoğu farklı bir SMTP sunucusu aracılığıyla e-posta göndermenin bir yolunu vermedi.

Makalenin söylemesi gereken şey, IIS SMTP sunucusunun artık var olmadığı, ancak SMTP kitaplıklarının hala sağlandığı ve uygulamanın farklı bir SMTP sunucusu kullanacak şekilde yapılandırılması gerektiği.


2
SMTP Sunucusu, Windows Server 2012'deki Web Sunucusu rolünün bir özelliğidir ve kurulabilir. Kaldırıldı, ancak kaldırılmadı.
joeqwerty

Hala 'IIS6 yönetim konsolu' altında göründüğünü tahmin ediyorum.
Simon,

2
@Simon Evet, 2002'den itibaren IIS 6'daki aynı eski yönetim konsolu, Windows Server 2012'de SMTP'yi yapılandırmak için hala kullanılıyor. :) IIS 6 yönetim özelliği, SMTP özelliğine bağlı.
bzlm

1
Cahil tembellik çamurunu görmezden gel. Yerel bir SMTP sunucusunun neden iyi bir fikir olduğu (ve çoğu diğer işletim sistemlerinde standarttır - istemci ve sunucu) hakkında ayrıntılar için, bu cevaba bakın .
bzlm

Windows 10 ya da ne denirse? Aynı anlaşma?
Simon
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.