xx Contents
Chapter 10 Transitioning from Exchange 2000 or 2003
to Exchange 2007 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
Preparing the Environment for a Transition to Exchange Server 2007 . . . . . . . . 624
Preparing the Active Directory Forest . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
Preparing the Legacy Exchange Organization . . . . . . . . . . . . . . . . . . . . . . 626
Suppressing Link State Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
Extending the Active Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
Prepare Legacy Exchange Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . 630
Prepare Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
Prepare AD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
PrepareDomain and PrepareAllDomains . . . . . . . . . . . . . . . . . . . . . . . . . . 634
Preparing the Exchange 2007 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
Exchange 2003 and Exchange 2007 Coexistence . . . . . . . . . . . . . . . . . . . . . . . 637
Replicating Public Folders to Exchange 2007 . . . . . . . . . . . . . . . . . . . . . . . . . 638
Pointing Internet Clients to the Client Access Server . . . . . . . . . . . . . . . . . . . . 642
Moving Legacy Mailboxes to Exchange 2007 . . . . . . . . . . . . . . . . . . . . . . . . . 643
Redirecting Inbound Mail to the Exchange 2007 Server . . . . . . . . . . . . . . . . . 646
Decommissioning the Legacy Exchange Server . . . . . . . . . . . . . . . . . . . . . . . . 649
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
Solutions Fast Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
Chapter 11 Introduction to Exchange Server 2007
Unifi ed Messaging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662
What Is Exchange 2007 Unifi ed Messaging? . . . . . . . . . . . . . . . . . . . . . . . . . . 662
Exchange 2007 Unifi ed Messaging Features . . . . . . . . . . . . . . . . . . . . . . . . . . 664
Call Answering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
Fax Receiving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
Outlook Voice Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
The Unifi ed Messaging Infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
The Unifi ed Messaging Mailbox Policies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674
Solutions Fast Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674
Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
Chapter 12 Getting Started with IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
Inside the Changes in IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
Installing IIS 6.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
Contents xxi
Installing IIS 6.0 via the User Interface . . . . . . . . . . . . . . . . . . . . . . . . . 681
Installing IIS 6.0 Using Unattended Installation . . . . . . . . . . . . . . . . . . . 682
IIS 6.0 Core Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
HTTP.sys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
Worker Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685
Web Service Administration and Monitoring. . . . . . . . . . . . . . . . . . . . . 686
Inetinfo.exe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
Where the Metabase Took Us … and Fell Short . . . . . . . . . . . . . . . . . . . . . 687
Administration: A Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
Troubleshooting Failed Requests with IIS 6.0 . . . . . . . . . . . . . . . . . . . . . . 690
IIS 6.0 versus IIS 7.0: The Delta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692
Modular Core Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692
Delegation: Less Is Often Better . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
Improved User Interface for Users, Partners, and Microsoft . . . . . . . . . . . . . 696
WMI with Logical Layout, Strong Support for PowerShell . . . . . . . . . . . . . 697
AppCmd: Swiss Army Knife for IIS Administrators and Developers . . . . . . . 700
Diagnostics 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
Runtime State and Control API (RSCA) . . . . . . . . . . . . . . . . . . . . . . . 701
FREB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
Solutions Fast Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705
Chapter 13 Installation of IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708
Install Types Available in IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708
Vista’s Programs and Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709
Longhorn’s Server Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714
Installing with PKGMGR.EXE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
Unattended Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
Installation Feature Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
The FTP Publishing Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734
Web Management Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735
World Wide Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
IIS 7.0 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
The Runtime Core “Bits” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
Application Development Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
Common HTTP Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
Health and Diagnostics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
Performance Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
xxii Contents
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
Solutions Fast Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
Chapter 14 The Extensible Core Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748
Understanding Development Advantages in IIS 7.0 . . . . . . . . . . . . . . . . . . . . . 748
Inside the Unifi ed Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749
Extending IIS 7.0 with Native (C\C++) Modules . . . . . . . . . . . . . . . . . . . . . . 751
Building Native Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751
Adding Native Modules to IIS 7.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
Using APPCMD.exe To Deploy Native Modules . . . . . . . . . . . . . . . . . . 756
Deploying Native Modules with IIS Manager . . . . . . . . . . . . . . . . . . . . 758
Manually Installing a Native Module . . . . . . . . . . . . . . . . . . . . . . . . . . 763
Enabling Managed Code (ASP.NET ) in IIS 7.0. . . . . . . . . . . . . . . . . . . . . . . . 763
iHttpModule Interface Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
Integrated Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770
Classic Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772
Solutions Fast Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772
Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774
Chapter 15 Get Started with IIS 7.0’s Confi guration . . . . . . . . . . . . . . . . . 775
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
Introducing ApplicationHost.confi g. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
XML 101: The Basics of Confi guration in IIS 7.0 . . . . . . . . . . . . . . . . . . . 778
The System.ApplicationHost Section Group Purpose . . . . . . . . . . . . . . . . . 784
Understanding system.webserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786
The IIS Schema: Your Cheat Sheet for Success . . . . . . . . . . . . . . . . . . . . . . 789
What Is a Schema? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
How to Read the Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
Section Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
Attribute Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
Element Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
Collection Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
Enum Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
Flags Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
Enabling Delegated Administration in IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . 793
Delegation Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794
Contents xxiii
Unlocking system.webServer Section Groups . . . . . . . . . . . . . . . . . . . . . . . 794
Section and Attribute locking in IIS 7.0. . . . . . . . . . . . . . . . . . . . . . . . . . . 795
Unlocking Confi guration Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804
Solutions Fast Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804
Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805
Chapter 16 Administration of an IIS 7.0 Web Server . . . . . . . . . . . . . . . . . 807
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808
Accomplishing Tasks Using IIS Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808
IIS Manager: Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
The IIS Manager Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
Adding Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813
Sorting IIS Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814
Accomplishing the Most Common Tasks Using IIS Manager . . . . . . . . . . . 815
Creating Web Sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816
Creating Virtual Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816
Creating Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817
Creating Application Pools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817
Changing Authentication Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818
Authentication in IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819
Enabling Basic Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819
Enabling Windows Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . 819
Enabling Digest Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820
Enabling Forms Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820
Viewing Worker Process Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820
Changing Diagnostic Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821
Selecting Rules for Failed Request Tracing . . . . . . . . . . . . . . . . . . . . 821
Accessing Information Using AppCmd.exe . . . . . . . . . . . . . . . . . . . . . . . . . . . 823
An Introduction to AppCmd.exe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824
Server Management Objects and Commands . . . . . . . . . . . . . . . . . . . . 825
Creating Web Sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826
Creating Virtual Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826
Creating Application Pools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826
Managing Backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
Creating a Backup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828
Managing Existing Backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828
Making Confi guration Changes with AppCmd.exe . . . . . . . . . . . . . . . . . . 828
Modifying Sections Using AppCmd.exe . . . . . . . . . . . . . . . . . . . . . . . . 828
Modifying Attributes Using AppCmd.exe . . . . . . . . . . . . . . . . . . . . . . . 830
Moving ASP.NET 2.0 Applications to IIS 7.0 Using AppCmd . . . . . . . . 831
xxiv Contents
Viewing IIS 7.0 Runtime Data Using AppCmd . . . . . . . . . . . . . . . . . . . . . 831
Viewing Currently Executing Requests with AppCmd . . . . . . . . . . . . . 831
Confi guring and Using Trace Log Data with AppCmd . . . . . . . . . . . . . . . . . . 832
Enabling or Disabling Failed Request Tracing . . . . . . . . . . . . . . . . . . 832
Viewing Trace Log Files Using AppCmd . . . . . . . . . . . . . . . . . . . . . . 832
Writing Scripts Using the New WMI Provider . . . . . . . . . . . . . . . . . . . . . . . . 833
Getting Started with WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
Starting Fresh with WMI in IIS 7.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
Creating Web Sites Using WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834
Creating Virtual Directories Using WMI . . . . . . . . . . . . . . . . . . . . . . . . 834
Using WMI to Create Application Pools . . . . . . . . . . . . . . . . . . . . . . . . 834
Setting Authentication Using WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
Enabling Failed Request Tracing Using WMI . . . . . . . . . . . . . . . . . . . . 835
Managed Code Administration: Inside Microsoft.Web.Administration . . . . . . . . 836
The Microsoft.Web.Administration Object Model . . . . . . . . . . . . . . . . . . . 836
Getting Started with MWA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
Using C# Express to Create a Console Application . . . . . . . . . . . . . . 837
Accessing Runtime Information with MWA. . . . . . . . . . . . . . . . . . . 839
Creating a Web Site Using MWA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839
Creating Virtual Directories Using MWA . . . . . . . . . . . . . . . . . . . . . . . 841
Adding Application Pools Using MWA . . . . . . . . . . . . . . . . . . . . . . . . . 841
Changing the Authentication Type for a Web Site Using MWA . . . . . . . 843
Viewing Currently Executing Requests Using MWA . . . . . . . . . . . . . . 844
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845
Solutions Fast Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845
Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847
Chapter 17 Troubleshooting 101: Diagnostics in IIS 7.0 . . . . . . . . . . . . . . . 849
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850
Using IIS 7.0’s Custom Detailed Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850
Confi guring Custom Error Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850
Confi guring Custom Error Messages Using IIS Manager . . . . . . . . . . . . 852
<httpErrors> Confi guration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854
Overriding for a Site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 858
Understanding and Reading Custom Error Messages in IIS 7.0 . . . . . . . . . 860
Delegating Custom Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861
Custom Error Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862
Inside IIS 7.0’s Failed Request Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865
Failed Request Tracing Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865
Confi guring IIS 7.0’s Failed Request Tracing . . . . . . . . . . . . . . . . . . . . . . . 865