ID Artikel: 816789 - Kajian Terakhir: 04 Oktober 2011 - Revisi: 2.0

Membaca akses ke setiap orang kelompok akan dihapus setelah Anda menginstal Exchange 2000 SP3

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

Pada Halaman ini

Perbesar semua | Perkecil semua

GEJALA

Jika Anda mengirim protokol Transfer surat sederhana (SMTP) mail dengan menggunakan aplikasi kolaborasi Data objek untuk Windows (CDOSYS), Data kolaborasi objek untuk aplikasi Exchange 2000 (CDOEX), atau System.Web.Mail pada komputer di mana Exchange 2000 Server Service Pack 3 (SP3) diinstal, Anda menerima pesan galat berikut:
CDO.Message.1 (0x80040220)
Nilai konfigurasi "SendUsing" tidak valid.
CatatanSystem.Web.Mail adalah pembungkus dikelola CDOSYS yang memungkinkan Anda untuk membuat dan mengirim pesan dengan menggunakan komponen pesan CDOSYS.

Penyebab

Masalah ini terjadi karena akses baca metabase Internet Information Services (IIS) dan layanan direktori Microsoft Active Directory telah dihapus untuk semua kelompok. Akses ini telah dihapus karena dari modifikasi keamanan di Exchange 2000 Server SP3. CDOEX, CDOSYS, dan System.Web.Mail harus memiliki akses ke IIS metabase untuk mengakses informasi tentang lokasi lintasan direktori pickup. Perilaku ini terjadi ketika Anda menggunakan Sendusingpickup metode dan jika informasi ini tidak ditentukan pada kode aplikasi. Karena akses terbatas, pengguna non-administratif menurut konteks keamanan yang aplikasi berjalan tidak dapat membaca informasi ini dari IIS metabase dan Active Directory.

Penyelesaian

Untuk mengatasi masalah ini, gunakan salah satu penyelesaian masalah di bagian "Workarounds".

Catatan Contoh kode untuk workarounds ditulis dalam konteks halaman Active Server Pages (ASP).

Penyelesaian masalah

Untuk mengatasi masalah ini, Anda harus mengubah konfigurasi atau kode. Perubahan konfigurasi dapat diluncurkan dengan cepat, tetapi perubahan kode harus dibuat lebih sengaja dan sambil mempertimbangkan keamanan aplikasi dan sumber daya.

Catatan Mengembalikan akses baca untuk IIS metabase untuk semua kelompok bukanlah solusi untuk masalah ini. Mengembalikan akses ini reintroduces kerentanan yang memecahkan Exchange 2000 Server SP3.

Gunakan salah satu dari penyelesaian masalah berikut sehingga Anda menggunakan CDOEX dan CDOSYS aplikasi setelah Anda menerapkan Exchange 2000 Server SP3. Solusi 1 dan 2 solusi, Anda mengubah konfigurasi administratif. Solusi 3 dan 4 solusi, Anda mengubah kode. Meskipun Anda hanya harus menerapkan satu solusi untuk mengatasi masalah, Anda harus memutuskan yang solusi adalah solusi yang paling tepat untuk pengguna aplikasi.

Untuk mengubah konfigurasi administratif, Anda harus selektif memberikan akses ke IIS metabase. Solusi 1 dan 2 solusi, kode aplikasi tidak berubah, tapi account yang memerlukan akses baca untuk IIS metabase diberi akses. Anda juga dapat memberikan IIS metabase akses ke account aplikasi berjalan di bawah (solusi 1) atau Anda dapat membuat akun baru untuk tujuan itu (2 solusi).

Adadd.vbs, Adlist.vbs, dan Addel.vbs file script memberikan akses ke IIS metabase. Lihat bagian "Lampiran" di akhir artikel ini untuk informasi lebih lanjut tentang file script ini.

Karena kolaborasi Data objek (CDO) panggilan RevertToSelf fungsi sebelum mengakses IIS metabase, Anda dapat menambahkan account di mana proses aplikasi berjalan. Untuk halaman ASP khas, ini adalah IWAM_ComputerName rekening.

Pemecahan masalah 1

Pilihan paling destabilisasi adalah untuk menentukan yang account aplikasi yang berjalan di bawah, dan kemudian memberikan akses account ke IIS metabase. Namun, karena aplikasi lain mungkin menggunakan account yang ada (misalnya, IWAM_XXX atau IUSR_XXX), solusi ini mungkin memperkenalkan kerentanan jika aplikasi ini akan diberikan akses ke IIS metabase. Keuntungan dari pemecahan masalah ini adalah bahwa kode aplikasi dan konfigurasi SMTP tidak berubah. Kelemahan pemecahan masalah ini adalah bahwa hal itu mungkin tidak perlu memberikan akses ke IIS metabase.

Untuk menentukan account yang aplikasi berjalan di bawah dan untuk memberikan akses account ke IIS metabase, ikuti langkah berikut:
  1. Menyimpan file .vbs ke direktori pada server Anda.
  2. Dalam IIS, Cari direktori virtual yang berisi aplikasi Anda, klik kanan direktori virtual, dan kemudian klik Properti.
  3. Klik Direktori keamanan tab, dan kemudian di bawah Anonim kontrol akses dan otentikasi, klik Mengedit.
  4. Dalam Metode otentikasi kotak dialog, pastikan Akses anonim kotak centang dipilih, dan kemudian di bawah Account yang digunakan untuk akses anonim, klik Mengedit.
  5. Tuliskan nama account yang ditampilkan oleh Account pengguna anonim kotak dialog.
  6. Klik Batalkan untuk menutup kotak dialog.
  7. Pada prompt perintah, mengubah direktori ke direktori yang berisi file .vbs pada langkah 1.
  8. Gunakan Adadd.vbs untuk memberikan akses ke IIS metabase untuk account yang Anda catat di langkah 5. Untuk melakukannya, jalankan perintah berikut pada prompt perintah:

    Cscript adadd.vbs ComputerName\AccountName

    Catatan Pada kontroler domain, menggunakan DomainName\AccountName, atau tidak menentukan nama komputer atau nama domain. Anda hanya perlu memberikan AccountName Setelah adadd.vbs. Untuk menambahkan IWAM_computername pada kontroler domain, jalankan salah satu perintah berikut pada prompt perintah:

    Cscript adadd.vbs DomainName\IWAM_ComputerName

    -atau-

    Cscript adadd.vbs IWAM_ComputerName

    Anda juga kadang-kadang harus memberikan akses IIS metabase untuk IWAM_ComputerName account dengan menggunakan Adadd.vbs. Untuk melakukannya, jalankan perintah berikut pada prompt perintah:

    Cscript adadd.vbs ComputerName\IWAM_ComputerName
  9. Gunakan Adlist.vbs untuk memverifikasi bahwa account telah ditambahkan ke daftar akses IIS metabase. Untuk melakukannya, jalankan perintah berikut pada prompt perintah:

    Cscript adlist.vbs
  10. Berhenti dan kemudian restart layanan IIS Admin dan layanan tergantung.
  11. Pada komputer yang menjalankan Exchange 2000, memberikan pengguna akses tulis ke Program Files\exchsrvr\mailroot\vsi#jalur direktori \pickup. Pada komputer yang tidak menjalankan Exchange 2000, memberikan pengguna akses menulis ke jalur direktori Inetpub\mailroot\pickup.
  12. Menunggu untuk Active Directory untuk mereplikasi untuk IIS metabase.
  13. Menjalankan aplikasi.

    Aplikasi sekarang bekerja seperti yang diharapkan.

Pemecahan masalah 2

Anda dapat membuat account, memberikan akses account itu untuk IIS metabase, dan kemudian mengkonfigurasi direktori virtual di mana aplikasi berjalan untuk menjalankan sebagai account. Keuntungan dari pemecahan masalah ini adalah bahwa kode aplikasi dan konfigurasi SMTP tidak berubah.

Untuk membuat akun baru untuk aplikasi untuk berjalan di bawah dan mengkonfigurasi direktori virtual, ikuti langkah berikut:
  1. Menyimpan file .vbs ke direktori pada server Anda.
  2. Menggunakan direktori pengguna dan komputer Active untuk membuat account komputer (misalnya, CdoExAccount), dan kemudian menambahkan account ini ke grup pengguna.

    Account ini tidak memerlukan kotak pesan.
  3. Dalam IIS, Cari direktori virtual yang berisi aplikasi Anda, klik kanan direktori virtual, dan kemudian klik Properti.
  4. Klik Direktori keamanan tab, dan kemudian di bawah Anonim kontrol akses dan otentikasi, klik Mengedit.
  5. Dalam Metode otentikasi kotak dialog, pastikan Akses anonim kotak centang dipilih, dan kemudian di bawah Account yang digunakan untuk akses anonim, klik Mengedit.
  6. Dalam Account pengguna anonim kotak dialog, ikuti langkah berikut:
    1. Dalam Username Ketik jenis nama account yang Anda buat pada langkah 2.

      Catatan Pada kontroler domain, menggunakan DomainName\AccountName, atau tidak menentukan nama komputer atau nama domain. Anda hanya perlu memberikan AccountName. Jika Anda membuat account komputer-tingkat, ketik nama account dalam format berikut: ComputerName\AccountName
    2. Pada kontroler domain menggunakan <domainname>\<accountname> atau tidak menentukan nama computername atau domain (hanya memberikan <accountname>) </accountname></accountname></domainname>
    3. Klik untuk menghapus Memungkinkan IIS untuk mengontrol password kotak centang.
    4. Dalam Sandi kotak, ketik sandi untuk account.
    5. Klik Oke, kemudian ketik kembali sandi pada kotak dialog yang dihasilkan.
  7. Klik Oke untuk menutup semua kotak dialog.
  8. Pada prompt perintah, mengubah direktori ke direktori yang berisi file .vbs pada langkah 1.
  9. Gunakan Adadd.vbs untuk memberikan akses ke IIS metabase untuk account yang Anda catat di langkah 2. Untuk melakukannya, jalankan perintah berikut pada prompt perintah:

    Cscript adadd.vbs ComputerName\AccountName

    Catatan Pada kontroler domain, menggunakan DomainName\AccountName, atau tidak menentukan nama komputer atau nama domain. Anda hanya perlu memberikan AccountName Setelah adadd.vbs. Untuk menambahkan IWAM_computername pada kontroler domain, jalankan salah satu perintah berikut pada prompt perintah:

    Cscript adadd.vbs DomainName\IWAM_ComputerName

    -atau-

    Cscript adadd.vbs IWAM_ComputerName

    Anda juga kadang-kadang harus memberikan akses IIS metabase untuk IWAM_ComputerName account dengan menggunakan Adadd.vbs. Untuk melakukannya, jalankan perintah berikut pada prompt perintah:

    Cscript adadd.vbs ComputerName\IWAM_ComputerName
  10. Berhenti dan kemudian restart layanan IIS Admin dan layanan tergantung.
  11. Jalankan Adlist.vbs untuk memastikan bahwa account telah ditambahkan ke daftar akses IIS metabase. Untuk melakukannya, jalankan perintah berikut pada prompt perintah:

    Cscript adlist.vbs
  12. Pada komputer yang menjalankan Exchange 2000, memberikan pengguna akses tulis ke Program Files\exchsrvr\mailroot\vsi#jalur direktori \pickup. Pada komputer yang tidak menjalankan Exchange 2000, memberikan pengguna akses menulis ke jalur direktori Inetpub\mailroot\pickup.
  13. Menunggu untuk Active Directory untuk mereplikasi untuk IIS metabase.
  14. Menjalankan aplikasi.

    Aplikasi sekarang bekerja seperti yang diharapkan.

Solusi 3

Jika Anda tidak secara eksplisit menetapkan SendUsing metode dalam kode, cdoSendUsingPickup nilai adalah nilai default. Namun, Anda dapat secara eksplisit menentukan cdoSendUsingPickup dan Lintasan direktori pickup dalam kode. Untuk menggunakan metode direktori pickup, SMTP lokal harus dikonfigurasi untuk relay.

Keuntungan dari pemecahan masalah ini adalah peningkatan aplikasi kontrol dari konfigurasi dan solusi tidak terbatas untuk contoh layanan SMTP pertama. Pada komputer yang memiliki beberapa SMTP server virtual, konfigurasi default memilih direktori pickup pertama dalam IIS metabase. Direktori pickup ini tidak mungkin direktori yang aplikasi perlu. Dengan secara eksplisit menentukan direktori pickup, Anda dapat memastikan bahwa konfigurasi default memilih direktori pickup yang benar. Kelemahan dari pemecahan masalah ini adalah bahwa hal itu lebih rapuh dari pemecahan masalah lainnya. Perubahan untuk instalasi Exchange 2000 atau administrasi konfigurasi dapat menyebabkan aplikasi untuk berhenti bekerja karena perubahan lokasi direktori pickup.
Contoh kode
Contoh kode berikut menunjukkan cara secara eksplisit menetapkan cdoSendUsingPickup dan lokasi direktori pickup:
<%@ Language=VBScript %>
	<%
	    Dim iMsg
	    Dim iConf
	    Dim Flds
	    Const cdoSendUsingPickup = 1
	
	    'For CDOSYS, the pickup directory is located at c:\inetpub\mailroot\pickup.
	    Const strPickup = "c:\Program Files\Exchsrvr\mailroot\vsi 1\Pickup"
	
	    'Create the message object.
	     Set iMsg = CreateObject("CDO.Message")
	
	    'Create the configuration object.
	     Set iConf = iMsg.Configuration
	
	    With iConf.Fields
	  	.item("http://schemas.microsoft.com/cdo/configuration/sendusing")= cdoSendUsingPickup
	       .item("http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory") = strPickup
	       .Update
	    End With
	
	    'Set the To, From, Subject, and Body properties of the message.
	    With iMsg
	       .To = "someone@example.com"
	       .From = "someone@example.com"
	       .Subject = "Test message by using CDOEx and cdoSendUsingPickup sent on: "  & now()
	       .TextBody = "This is a test by using CDOEx"
	       .Send
	    End With 
	    Set iMsg = Nothing
	 %>

Solusi 4

Alih-alih menulis pesan ke direktori pickup lokal, Anda dapat menulis pesan kepada remote SMTP server melalui jaringan. Keuntungan dari pemecahan masalah ini adalah keseluruhan lebih rendah konsumsi sumber daya dan informasi kesalahan rinci dan segera. Kerugian pemecahan masalah ini adalah bahwa remote SMTP server tidak akan tersedia dan bahwa Anda kehilangan mekanisme alam antrian di direktori pickup.
Contoh kode
Kode dimodifikasi contoh berikut bekerja pada Exchange 2000 Server SP3. Perhatikan bahwa sampel ini menambahkan kode untuk membuat dan menetapkan objek konfigurasi.
<%@ Language=VBScript %>
	<%
	    Dim iMsg
	    Dim iConf
	    Dim Flds
	    Const cdoSendUsingPort = 2
	    Const strSmartHost = "MySmartHostServer"
	
	    'Create the message object.
	    Set iMsg = CreateObject("CDO.Message")
	
	    'Create the configuration object.
	    Set iConf = iMsg.Configuration
	
	    'Set the fields of the configuration object to send by using SMTP through port 25.
	    With iConf.Fields
	       .item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
	       .item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSmartHost
	       .Update
	    End With
	
	    'Set the To, From, Subject, and Body properties of the message.
	    With iMsg
	       .To = "someone@example.com"
	       .From = "someone@example.com"
	       .Subject = "Test message by using CDOEx and cdoSendUsingPort, sent on: "  & now()
	       .TextBody = "This is a test by using CDOEx"
	       .Send
	    End With
	    set iMsg = Nothing
	 %> 

Lampiran

Untuk men-download script file yang memberikan akses baca untuk IIS metabase dan Active Directory, kunjungi Web site Microsoft berikut:
http://download.Microsoft.com/download/9/7/0/9706f302-99f8-49f9-8aa4-df66d771feaf/smtppermissionsscripts.exe (http://download.microsoft.com/download/9/7/0/9706f302-99f8-49f9-8aa4-df66d771feaf/smtppermissionsscripts.exe)
Download termasuk file script berikut.
Perkecil tabel iniPerbesar tabel ini
Adlist.VBSDaftar daftar kontrol akses (ACL) untuk setiap contoh layanan SMTP server Active Directory (jika tersedia) atau dalam IIS metabase.
Adadd.VBSMemberikan akses hanya-baca account untuk semua contoh layanan SMTP pada server.
Addel.VBSMenghapus semua entri kontrol akses (ACE) untuk account dari semua contoh layanan SMTP pada server.
Setiap script menggunakan Active Directory untuk menentukan apakah komputer menjalankan Exchange 2000. Jika komputer menjalankan Exchange 2000, perubahan yang dibuat dalam direktori aktif, dan berkas Ds2mb.dll bereplikasi perubahan untuk IIS metabase untuk konsumsi oleh SMTP. Jika komputer tidak menjalankan Exchange 2000, ada perubahan secara langsung dalam IIS metabase.


Berlaku bagi:
  • Microsoft Exchange Server 2003 Standard Edition
  • Microsoft Exchange 2000 Enterprise Server
  • Microsoft Exchange 2000 Server Standard Edition
Kata kunci: 
kbdownload kbmt KB816789 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:816789  (http://support.microsoft.com/kb/816789/en-us/ )