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 . 632 PrepareDomain and PrepareAllDomains . . . . . . . . . . . . . . . . . . . . . . . . . . 634 Preparing the Exchange 2007 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635 Exchange 2003 and. Partners, and Microsoft . . . . . . . . . . . . . 696 WMI with Logical Layout, Strong Support for PowerShell . . . . . . . . . . . . . 697 AppCmd: Swiss Army Knife for IIS Administrators and Developers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824 Server Management Objects and Commands . . . . . . . . . . . . . . . . . . . . 825 Creating Web Sites . . . . . . . . . . . .