Abstract:
A method and apparatus is disclosed for delivering messages that utilizes a message queue and a router/filter within a private data network. The private network is connected to an external data network such as the Internet, and has separate outbound resource servers to provide a high degree of scalability for handling a variety of message types.

Description:
BACKGROUND OF THE INVENTION  
       [0001]     This application is a continuation of pending U.S. application Ser. No. 10/393,227, filed Mar. 20, 2003, entitled “Scalable Architecture for Transmission of Messages Over a Network”, which is a continuation of U.S. application Ser. No. 09/097,307, filed on Jun. 12, 1998 (now U.S. Pat. No. 6,597,688). 
     
    
     FIELD OF THE INVENTION  
       [0002]     The present invention relates to the field of message receipt/transmission and delivery using computer, phone, wireless and other communications networks. Specifically, the present invention relates to the transmission of e-mail messages which may be text only, text plus an audio file, text plus a video file, text plus a fax file or any combination thereof to a phone, pager or fax machine or other receiving device suitable for the message content, over appropriate communications networks using an architecture which enables easy expansion to handle additional message traffic as well as to connect to additional communications networks, including networks which do not presently exist which may become available in the future.  
       DESCRIPTION OF RELATED ART  
       [0003]     Voice and data communications systems such as the public switched telephone network (PSTN) are currently used to transfer image and text data transmitted by facsimile (“fax”) machines in addition to the normally carried voice traffic. These faxed images are usually transmitted through the PSTN and received for printout or storage of the image on a destination fax machine or computer for the use by the recipient.  
         [0004]     In U.S. Pat. No. 6,208,638 entitled Method and Apparatus for Transmission and Retrieval of Facsimile and Audio Messages Over a Circuit or Packet Switched Network, it is disclosed that to provide for the receipt and transmission of audio and fax information by a first user over a circuit switched network such as the public switched telephone network (PSTN) to a second user over a packet switched network such as the Internet, a communications server is connected both to the circuit switched network and a packet switched network.  
         [0005]     The communications server contains resources to receive and process incoming audio and facsimile calls from the circuit switched network into a format suitable for transmission over the packet switched network to the second user&#39;s address. In addition, a link is first determined between the second user&#39;s address on the circuit switched network and the second user&#39;s address on the packet switched network, and then an appropriate route to the second user&#39;s address on the packet network is determined. With the system being maintained in a distributed and redundant fashion, reliable receipt and transfer of all messages is ensured. A copy of the specification and drawings of U.S. Pat. No. 6,208,638 is attached hereto.  
         [0006]     However, the architecture utilized as described in U.S. Pat. No. 6,208,638 is not easily scalable to handle increasingly higher levels of message traffic or to easily connect to networks in addition to the PSTN and the Internet.  FIG. 1  shows the essence of the architecture of U.S. Pat. No. 6,208,638. An e-mail message is passed to an outbound resource  11  (communications server 550 in U.S. Pat. No. 6,208,638) which converts the e-mail message to a fax format or to audio for transmission to a fax machine or telephone connected to the PSTN. A database  13  stores customer information necessary for processing of messages (an unnumbered part of communications server 550 in U.S. Pat. No. 6,208,638 which is also contained in database server 595 in U.S. Pat. No. 6,208,638). After processing of an e-mail message by outbound resource  11 , a fax or voice mail message is sent over the PSTN or more generally, a generalized switched telephone network (GSTN) which includes cellular telephone networks as well as the PSTN. Optionally, a pager message may also be sent informing a user of the fax which has been sent or availability of a voice mail message as described in U.S. Pat. No. 6,073,165 entitled Processing and Forwarding Messages From a Computer Network to a Forwarding Service.  
       SUMMARY OF THE INVENTION  
       [0007]     A method and apparatus is disclosed for delivering messages that utilizes a message queue and a router/filter within a private data network. The private network is connected to an external data network such as the Internet, and has separate outbound resource servers to provide a high degree of scalability for handling a variety of message types. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0008]      FIG. 1  is a block diagram of a prior art architecture which performs the functions, but not the scalability of the architecture of the present invention.  
         [0009]      FIG. 2  is a block diagram illustrating the architecture of the present invention.  
         [0010]      FIG. 3  is a block diagram showing the data/control flow through message queue  21 , router/filter  23  and database  27 .  
         [0011]      FIG. 4  ( 4   a  and  4   b ) is a flow diagram of the processing performed by router/filter  23 .  
         [0012]      FIG. 5  is a system diagram of a network containing a message server.  
         [0013]      FIG. 6  is a block diagram illustrating the message server.  
         [0014]      FIG. 7  is a flow diagram illustrating some operations.  
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0015]     The present invention provides a method and apparatus for allowing the receipt and transmission of audio, video and fax information between a circuit switched network and a packet switched network. For purposes of explanation, specific embodiments are set forth to provide a thorough understanding of the present invention. However, it will be understood by one skilled in the art, that the invention may be practiced without these details. Further, although the present invention is described through the use of circuit switched and packet switched networks, most, if not all, aspects of the invention apply to all networks in general. Moreover, well-known elements, devices, process steps and the like are not set forth in detail in order to avoid obscuring the present invention.  
         [0016]     Referring now to  FIG. 2 , e-mail messages for a customer are sent to/through an external data network  15  (e.g., the Internet) and routed to an appropriate SMTP/HTTP (or SHTTP) server  17  as determined by a domain name server (DNS)  18  according to well known techniques. The e-mail message may be a text message or it may include a file, the content of which may be audio, video or bitmapped (e.g., a fax) or other data. Again, the techniques for creating and sending e-mail messages with these characteristics are well known.  
         [0017]     A processing server  19 , which includes a message queue  21  and a router/filter  23  first verifies that the message is from or is to a customer using information in database  27 . After successful verification, the message is broken into fragments (in the case of files with multiple attachments) and written to message queue  21 . Router/filter  23  obtains messages from the message queue and handles least call routing/billing/prioritization/filtering of messages. Filtering is primarily for notification messages for pager delivery. After billing verification and determination of a least cost route, the message is assigned to one or more outbound resources  31  for delivery to the intended recipient by a method or methods selected by the customer as previously recorded in database  27 .  
         [0018]     In the case of faxes, the outbound resource is a server which dials the destination fax number and sends the fax.  
         [0019]     In the case of voice messages, the outbound resource is a server which dials the destination telephone number and plays the voice message.  
         [0020]     In the case of notification messages, the outbound resource is a server which dials out to the paging terminal or delivers the notification message through any appropriate paging gateway.  
         [0021]     After the message (in whatever form) has been delivered, a receipt with details and an error log (if any) is sent back via a secure protocol to the message queue  21 .  
         [0022]     The receipt/error log messages are then processed by the router/filter which interfaces with a billing system (not shown) for customer account update.  
         [0023]      FIG. 3  is a block diagram showing the data/control flow through message queue  21 , router/filter  23  and database  27  using information contained in the following tables as explained with reference to  FIGS. 4   a  and  4   b .  
                         TABLE 1                       Message Queue Table                                MESSAGE_ID   This is a unique number           assigned to each message           that arrives in the system.       RESOURCE_ID   Unique number assigned           to each Outbound Resource       RESOURCE_TYPE   Each Resource is           identified by the type of           messages it can deliver           (e.g., FAX, VOICE,           NOTIFY, etc.)       RESOURCE_ADDRESS   Location of the Resource           (such as IP address)       MESSAGE_TO_EMAIL_ADDRESS   To: address of the message       MESSAGE_FROM_EMAIL_ADDRESS   From: address of the           message       MESSAGE_LOCATION   Location of actual message           on the Message Queue 21       MESSAGE_SIZE   Size of the message in           bytes       MESSAGE_PRIORITY   Priority of the message           (e.g., low, medium, high)       MESSAGE_CREATION_DATE   Timestamp identifying the           date/time that the message           was received by the system       MESSAGE_EXPIRY_DURATION   Amount of time after which           the message becomes stale       MESSAGE_SCHEDULED_DATE   Scheduled delivery           timestamp for the message       MESSAGE_STATUS   Current status of the           message (Active, Pending,           Sent, etc.)       MESSAGE_ESTIMATED_COST   Estimated cost for the           delivery of the message       CUSTOMER_KEY   Unique number identifying           the customer in the           database       MESSAGE_PART_OF_BROADCAST   Flag identifying if the           message is part of a           larger broadcast list           waiting to be delivered       BROADCAST_ID   Unique number identifying           a broadcast list       COVERPAGE_ID   Unique number identifying           a coverpage (if any) for           a fax       MESSAGE_SUBJECT   Subject line of the           message to be delivered       MESSAGE_DURATION   Duration of the message           (delivery time of fax,           or delivery time for a           voice message, etc.)       MESSAGE_RATE   Rate for message delivery           (dollars per second, etc.)       MESSAGE_SEND_DATE   Actual timestamp           identifying when the           message was delivered       MESSAGE_REMOTE_CSID   Identifier of the fax           machine to which a FAX           message was delivered       MESSAGE_TYPE   Type of message (e.g.,           FAX, VOICE,           NOTIFICATION, etc.)       RESOURCE_COMMUNICATION_TYPE   Protocol used to           communicate with the           resource (HTTP, SHTTP,           etc.)       MESSAGE_LANGUAGE_CODE   Language used for delivery           of a receipt or response,           based on settings in the           customer table       MESSAGE_PAGES   Number of pages of a           message (used primarily           for a fax)                    
         [0024]    
       
         
               
             
               
               
             
           
               
                 TABLE 2 
               
               
                   
               
               
                   
               
               
                 File Type Table 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 FILETYPE_MESSAGE_TYPE 
                 Identifier of a message type 
               
               
                   
                 (FAX, VOICE, etc.) 
               
               
                 FILETYPE_RESOURCE_TYPE 
                 Identifier to determine a 
               
               
                   
                 resource that can handle a 
               
               
                   
                 particular file type 
               
               
                 FILETYPE_EXTENSION 
                 The filename extension that 
               
               
                   
                 identifies a file type (e.g., 
               
               
                   
                 WAV, TIF, JFX, AU, GSM, etc.) 
               
               
                   
               
             
          
         
       
     
         [0025]    
       
         
               
             
               
               
             
           
               
                 TABLE 3 
               
               
                   
               
               
                   
               
               
                 Customer Table 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 CUSTOMER_KEY 
                 Unique number identifying a customer 
               
               
                   
                 in the database 
               
               
                 FIRSTNAME 
                 First name of customer 
               
               
                 LASTNAME 
                 Last name of customer 
               
               
                 COMPANY 
                 Company name of customer 
               
               
                 ADDRESSLINE1 
                 Company address 
               
               
                 ADDRESSLINE2 
                 Company address 
               
               
                 CITY 
                 Company city 
               
               
                 MAILREGION 
                 Company state or equivalent 
               
               
                 MAILCODE 
                 Zipcode or equivalent 
               
               
                 COUNTRY 
                 Company country 
               
               
                 WORKNUMBER 
                 Customer work phone number 
               
               
                 HOMENUMBER 
                 Customer home phone number 
               
               
                 EMAILADDRESS 
                 Email address of customer 
               
               
                 COLLECTIONMETHOD 
                 Collection method such as Credit card, 
               
               
                   
                 Debit, etc. 
               
               
                 BILLTYPE 
                 e.g., Customer, Demo, free, corporate, etc. 
               
               
                 STATUS 
                 Status of customer, Active, Inactive, etc. 
               
               
                 LANGUAGECODE 
                 Language of customer, English, German, etc. 
               
               
                 CURRENCYCODE 
                 Currency for billing the customer, US 
               
               
                   
                 Dollars, Pound Sterling, etc. 
               
               
                   
               
             
          
         
       
     
         [0026]    
       
         
               
             
               
               
               
             
           
               
                 TABLE 4 
               
               
                   
               
               
                   
               
               
                 Currency Table 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                   
                 FORMAT 
                 Currency label 
               
               
                   
                 CURRENCY_SYMBOL 
                 Symbol for currency 
               
               
                   
                   
               
             
          
         
       
     
         [0027]    
       
         
               
             
               
               
             
           
               
                 TABLE 5 
               
               
                   
               
               
                   
               
               
                 Notification Table 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 CUSTOMERKEY 
                 Unique number identifying a customer in the 
               
               
                   
                 database 
               
               
                 PAGERTYPECODE 
                 Code to determine the kind of pager service 
               
               
                 BBSNUMBER 
                 Modem number for pager notification delivery, 
               
               
                   
                 based on the pager type 
               
               
                 PAGERNUMBER 
                 Identifier number of the pager unit 
               
               
                 PIN 
                 PIN code for the pager unit 
               
               
                 DISPLAYTYPE 
                 Display type of the pager (numeric, 
               
               
                   
                 alphanumeric, etc.) 
               
               
                   
               
             
          
         
       
     
         [0028]    
       
         
               
             
               
               
             
           
               
                 TABLE 6 
               
               
                   
               
               
                   
               
               
                 Response_email Table 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 RESPONSE_ID 
                 Unique ID for a response/receipt 
               
               
                   
                 message to be sent to a customer 
               
               
                 REPONSE_SUBJECT 
                 Subject line of the response message 
               
               
                 RESPONSE_FROM_EMAIL 
                 From: line of the response message 
               
               
                 RESPONSE_BODY 
                 Actual text of the response message 
               
               
                   
               
             
          
         
       
     
         [0029]    
       
         
               
             
               
               
             
           
               
                 TABLE 7 
               
               
                   
               
               
                   
               
               
                 Resource Table 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 RESOURCE_ID 
                 Unique identifier for 
               
               
                   
                 the resource 
               
               
                 RESOURCE_TYPE 
                 Type of resource 
               
               
                   
                 (FAX, VOICE, etc.) 
               
               
                 RESOURCE_STATUS 
                 Status of resource 
               
               
                   
                 (Active, Inactive, etc.). 
               
               
                 RESOURCE_QUEUE_STATUS 
                 Status of the Queue, 
               
               
                   
                 number of messages in 
               
               
                   
                 queue 
               
               
                 RESOURCE_TIME_ZONE 
                 Time zone for the 
               
               
                   
                 resource 
               
               
                 RESOURCE_QUEUE_MAX 
                 Maximum size of the 
               
               
                   
                 resource queue 
               
               
                 RESOURCE_ADDRESS 
                 Address of the resource 
               
               
                   
                 (IP address, etc.) 
               
               
                 RESOURCE_NAME 
                 Name of the resource 
               
               
                 RESOURCE_EXPIRY_DURATION 
                 Expiry duration for any 
               
               
                   
                 message sent to the 
               
               
                   
                 specified resource 
               
               
                 RESOURCE_QUEUE_IN_STATUS 
                 Number of messages 
               
               
                   
                 waiting to be delivered 
               
               
                   
                 by the resource 
               
               
                 RESOURCE_COMMUNICATION_TYPE 
                 Method used to 
               
               
                   
                 communicate with 
               
               
                   
                 resource (HTTP, SHTTP, 
               
               
                   
                 etc.) 
               
               
                   
               
             
          
         
       
     
         [0030]    
       
         
               
             
               
               
             
           
               
                 TABLE 8 
               
               
                   
               
               
                   
               
               
                 Resource Rates Table 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 RESOURCE_ID 
                 Unique identifier for the resource 
               
               
                 RESOURCE_PREFIX 
                 Any digits to be dialed 
               
               
                   
                 before an actual number 
               
               
                 RESOURCE_CITY_NAME 
                 Name of destination city for the 
               
               
                   
                 message to be delivered 
               
               
                 RESOURCE_PROVIDER_RATE 
                 Rate for a particular city 
               
               
                   
                 (dollars per second, etc.) 
               
               
                 RESOURCE_MAX_DIGITS 
                 Max number of digits allowed to be 
               
               
                   
                 dialed 
               
               
                 RESOURCE_AREA_CODE 
                 Area code for the particular city 
               
               
                   
               
             
          
         
       
     
         [0031]      FIGS. 4   a  and  4   b  are a flow diagram of the processing performed by router/filter  23  using Tables 1-8. When a message is received it is placed into message queue  21  which is simply a storage area, the specifics of which, including the mechanism for placing the message into the queue are well known. Certain details concerning the message are also stored in a message queue table (Table 1). In step  41 , router/filter, which is a computer program running on processing server  19 , polls the message queue table for pending requests as determined by the existence of an active message in the message status field. If no message is found, after a system defined delay, the message queue table is again polled (step  43 ). Once a message has been found in the table, processing continues with step  45  by determining the message type using the message_type field in Table 1 and the file type information in Table 2. The customer is then validated using information in Table 3 in step  47 . In step  49 , currency information for the customer is obtained from Table 4. The message is then filtered for possible pager notification using the information in Table 5 in step  51 . In step  53 , Table 7 is used to check for available resources to deliver the message. In step  55 , the rates of available resources are checked to determine the least cost resource using Table 8. Then in step  59 , the message is delivered using the determined least cost resource. After the message has been delivered, or after an error in the delivery has occurred, in step  59 , a response/receipt is composed using Table 6. In step  61 , the response or receipt is delivered to the sender. The system then begins the process over again at step  41 .  
         [0032]     As noted above outbound resource  31  is equivalent to communications server 550 as described in U.S. Pat. No. 6,208,638. The modifications made to outbound resource to enable it to operate in a system having an architecture as described herein are as follows.  
         [0033]     These changes will be described with reference to the message structure of received messages.  
         [0000]     Message Structure  
         [0034]     Each field has a value following an ‘=’ sign and is terminated by a newline character. The exception to this is the “Message” field where a newline immediately follows the ‘=’ sign and the actual message follows on the next line.  
         [0035]     The fields of a message are as follows:  
         [0036]     Password= 
         [0000]     MessageID= 
         [0000]     Message Status= 
         [0000]     MessageSentTimeStamp= 
         [0000]     MessageDuration= 
         [0000]     MessageLength= 
         [0000]     MessageRemoteCSID= 
         [0000]     MessageSourceCSID= 
         [0000]     MessageAttachStatus= 
         [0000]     Messagedestination= 
         [0000]     ResourceID= 
         [0000]     ResourceStatus= 
         [0000]     ResourceLastCommTimeStamp= 
         [0000]     ResourceExpiryDuration= 
         [0000]     ResourceQueueInStatus= 
         [0000]     ResourceQueueOutStatus= 
         [0000]     ResourceChannelMax= 
         [0000]     ResourceChannelStatus= 
         [0000]     MessageBoundary= 
         [0000]     Message= 
         [0037]     In the following explanation of the above fields, the text in brackets at the end indicates the entity providing the value for the field in the forward/reverse direction (i.e., from router/filter  23  (RF) to outbound resource  31  (RESOURCE), and from RESOURCE to RF, respectively). “NA” indicates that no value is applicable, and the text “NA” is used to populate the field. “Same” indicates that the same value is used in the reverse direction, i.e, the RESOURCE does not modify the value; it only echoes the value it receives in that field.  
         [0000]     Password—There is a fixed password pair for each RESOURCE and RF combination. RESOURCE stores the RF password in a flat text password file in a directory (jfaxom), and RF stores the RESOURCE password in the database. (RF/RESOURCE).  
         [0000]     MessageID—Unique ID, per message, generated by RESOURCE. (RESOURCE/Same).  
         [0000]     MessageStatus—Code indicating current status of the message. See Status codes below. (RF/RESOURCE)  
         [0000]     MessageSentTimeStamp—Time stamp indicating date/time the message was delivered to the final destination by RESOURCE. (NA/RESOURCE)  
         [0000]     MessageDuration—Time (in seconds) to transmit message from RESOURCE. (NA/RESOURCE)  
         [0000]     Messagelength—Number of pages transmitted by RESOURCE. (NA/RESOURCE)  
         [0000]     MessageRemoteCSID—called subscriber identification (CSID) of fax machine to which message was transmitted. (NA/RESOURCE)  
         [0000]     MessageSourceCSID—Source CSID. This may be customized per customer. (RF/Same)  
         [0000]     MessageAttachStatus—Value of “A” indicates a message is attached for delivery. (RF/RESOURCE)  
         [0000]     MessageDestination—Destination phone number. (RF/Same)  
         [0000]     ResourceID—Unique ID, per resource, stored in the database. (RF/Same)  
         [0000]     ResourceStatus—Code indicating the current status of the resource, i.e., whether it is active or not. RF uses this to determine whether further messages should be sent to RESOURCE for delivery. See Status codes below. (NA/RESOURCE)  
         [0000]     ResourceLastCommTimeStamp—Date/time of last communication between RF and RESOURCE. (RF/RESOURCE)  
         [0000]     ResourceExpiryDuration—Life of message (in minutes) on RESOURCE. If a message has not been delivered to the final destination by RESOURCE within this amount of time, the message is considered “expired” and is discarded.  
         [0000]     ResourceQueueInStatus—Number of messages waiting to be processed in an Inbox directory on RESOURCE. (NA/RESOURCE)  
         [0000]     ResourceQueueOutStatus—Number of messages waiting to be processed in an Outbox directory on RESOURCE. (NA/RESOURCE)  
         [0000]     ResourceChannelMax—Number of channels available for use on RESOURCE. (NA/RESOURCE)  
         [0038]     ResourceChannelStatus—Channel activity status, e.g., 0000000111000001, where 0&#39;s indicate an idle channel and 1&#39;s indicate a busy channel. (NA/RESOURCE)  
         [0000]     MessageBoundary—Text for MIME boundary. (RF/NA)  
         [0000]     Message—Actual MIME message sent by RF. If MessageAttachStatus=NA, no message follows this tag.  
         [0039]     All fields are NA if not used.  
         [0000]     Date fields are expressed in MMDDYYhhmmss format.  
         [0040]     Resource Status Codes are:  
         [0000]     A—Active  
         [0000]     I—Inactive  
         [0041]     Message Status Codes are:  
         [0000]     P—Pending  
         [0000]     H—On Hold  
         [0000]     D—Deferred  
         [0000]     R—Ready for sending to RESOURCE  
         [0000]     X—Exchanged, i.e., sent to RESOURCE but not acknowledged by it.  
         [0000]     A—Sent to RESOURCE and acknowledged by it.  
         [0000]     S—Sent (i.e., receipt for final delivery received from RESOURCE)  
         [0042]     Normal sequence for Message delivery by RESOURCE is:  
         [0000]     RF receives a request in its queue (message queue  21 ).  
         [0000]     RF sends the message to RESOURCE.  
         [0000]     RESOURCE gets message, authenticates password, and creates a new message in the Inbox directory.  
         [0000]     RESOURCE acknowledges receipt of message.  
         [0000]     RESOURCE processes the message in Inbox (MessageStatus=A, MessageAttachStatus=A).  
         [0000]     RESOURCE moves message to a Process directory for further processing.  
         [0000]     RESOURCE finishes processing message and delivers it to final destination.  
         [0000]     RESOURCE removes the message from the Process directory.  
         [0000]     RESOURCE creates a message in Outbox directory. (MessageStatus=S). If a “reply message” is to be delivered to the original sender,  
         [0000]     MessageAttachStatus=A, else MessageAttachStatus=NA. MessageID remains the same in either case.  
         [0000]     RESOURCE delivers receipt (with “reply message,” if applicable) to RF.  
         [0000]     RF receives the message and puts it in the Queue for database processing.  
         [0043]     Processing server  19  with the above described functionality may be implemented using readily available systems such as a Windows NT server or a UNIX server. Database  27  may be implemented as a database server using readily available systems such as a Windows NT server or a UNIX server running, for example a SQL database.  
         [0044]     What follows is a detailed description of  FIGS. 5-7  which set forth a method and apparatus for allowing the receipt and transmission of audio and fax information between a circuit switched network and a packet switched network, as described in U.S. Pat. No. 6,208,638. For purposes of explanation, specific embodiments are set forth to provide a thorough understanding of the present invention. However, it will be understood by one skilled in the art, from reading this disclosure, that the invention may be practiced without these details. Further, although the system is described through the use of circuit switched and packet switched networks, most, if not all, aspects apply to all networks in general.  
         [0045]      FIG. 5  contains a block diagram illustrating an embodiment of a system containing a communications server  550  connected to a circuit switched network  530  and a wide area network (WAN)  580 . In an embodiment, the circuit switched network  530  is a circuit switched network such as the PSTN while WAN  580  is a packet switched network such as the Internet. It is to be noted that circuit switched network  530  can also be a network such as the generalized switched telephone network (GSTN), which encompasses PSTN networks, cellular telephone networks, and the other networks with which they are in communication.  
         [0046]     Communications server  550  is connected to circuit switched network  530  via a switch  540  and to WAN  580  through the use of a router  585 . As described in further detail below, in an embodiment, switch  540  and router  585  are interfaced to communications server  550  using two separate hardware interfaces. In an alternate embodiment, switch  540  and router  585  can be interfaced to communications server  550  through the use of one hardware unit.  
         [0047]     Connected to circuit switched network  530  is both a telephone unit  510  and a facsimile unit  520 . Telephone unit  510  is a standard telephone capable of converting audio signals into electrical signals suitable for transmission over circuit switched network  530 . Similarly, facsimile unit  520  is a standard facsimile machine capable of transmitting and receiving facsimile messages over circuit switched network  530 . Each of these devices can be connected to circuit switched network  530  using either wired or wireless technology.  
         [0048]     Connected to WAN  580  is a database server  595 , a system management unit  597 , a mail server  560 , and a client  590 . Each of these systems communicate with each other and with communications server  550  via WAN  580  using such protocols such as simple network management protocol (SNMP) and hyper-text transport protocol (HTTP)—packetized using a protocol such as the transmission control protocol/internet protocol (TCP/IP).  
         [0049]     In an embodiment, each one of database server  595 , system management unit  597 , mail server  560 , and client  590 , are stand-alone computers or workstations containing the hardware and software resources to enable operation. In alternate embodiments, the functions provided by each one of database server  595 , system management unit  597 , mail server  560 , and client  590 , are provided by any number of computer systems.  
         [0050]     In an embodiment, mail server  560  is a server providing e-mail receipt and transmission using a protocol such as the simple mail transfer protocol (SMTP) and post office protocol (POP). Moreover, client  590  is configured to be able to communicate over WAN  580  using SMTP or POP in order to retrieve e-mail from mail server  560  or another suitably configured server.  
         [0051]     System management unit  597  communicates with communications server  550  to monitor: (1) the processes on communications server  550 ; (2) the status of the trunk line connected to communications server  550 ; and (3) the connection between the various servers connected to WAN  580 . As described below, if any processes on communications server  550  or connection to the circuit switched network  530  is interrupted, system management unit  597  can allocate resources, or cause the re-routing of a call or message via one or more redundant resources or connections, ensuring that the call or message is routed to the final destination.  
         [0052]     Communications server  550  contains user data needed to receive and route incoming messages received from circuit switched network  530 . The same information is also stored on database server  595 . In an embodiment, communications server  550  stores an inbound address, a set of final destination addresses; and an account status for each user. The inbound address corresponds to the telephone number assigned to the user. As further discussed below, the inbound address is the number that a message sender dials on telephone unit  510  or facsimile unit  520  to leave a message for the user. The set of final destination address contain one or more e-mail addresses where the user account status information indicates whether the inbound address is either active and or inactive—i.e, whether the user is able to receive messages using the system.  
         [0053]     Database server  595  stores a duplicate copy of the inbound address, the set of final destination addresses; and the account status for each user. Database server  595  also stores additional information for each user such as mailing address and billing information which are not used in the operation of the present invention but are note herein for completeness only. Thus, the information that is stored on communications server  550  is a subset of the information that is stored on database server  595 , and if communications server  550  were to become inoperable or otherwise unable to handle incoming messages, database server  595  can configure another communications server to accept those calls.  
         [0054]     In an embodiment, system management unit  597  is responsible for monitoring the status of communications server  550  and re-assigning the users being handled by communications server  550  if communications server malfunctions or becomes overloaded with incoming calls. In the former case, system management unit  597  would re-assign all users being handled by communications server  550  to another communications server. In the latter case, system management unit  597  would only off-load the only those incoming calls for which communications server  550  does not have the available resources to process.  
         [0055]      FIG. 6  is a block diagram of communications server  550  configured in accordance with an embodiment containing a processor  651  coupled to a memory subsystem  653  through the use of a system bus  655 . Also coupled to system bus  655  is a network interface  656 ; a trunk interface  652 ; and a set of fax/voice processing resources  654 . Set of fax/voice processing resources  654  and trunk interface  652  are also coupled to a bus  657 .  
         [0056]     Bus  657  is a bus that supports time division multiplex access (TDMA) protocols to optimize the flow of real time traffic between set of fax/voice processing resources  654  and trunk interface  652 .  
         [0057]     Memory subsystem  653  is used to store information and programs needed by communications server  550 . The functioning of memory subsystems in computer design are well known to those of ordinary skill in the art and thus will not be further discussed herein.  
         [0058]     In an embodiment, trunk interface  652  is a trunk line interface, such as a T-1 or E-1 line, to switch  540  and can handle up to 24 channels of communications. Trunk line signaling is well known to those of ordinary skill in the art of telecommunication and thus will not be further discussed herein except as necessary for describing the invention.  
         [0059]     Set of fax/voice processing resources  654  are made up of multiple fax/voice processing cards. Each of these processing cards contain processing units which are capable of receiving and transmitting facsimiles according to established protocols, and which are capable of digitizing voice or other audio data, also according to established protocols. In an embodiment, there are three fax/voice processing cards in set of fax/voice processing resources  654 , each fax/voice processing card containing eight processing units capable of handling a channel from trunk interface  652 . Thus, communications server  550  can communicate on twenty-four channels concurrently.  
         [0060]     The storage of destination addresses on both circuit switched network  530  and WAN  580  is controlled by a database located either on communications server  550  or on database server  595 . Keeping this information separate from communications server  550  allows communications server  550  to be a resource that can be allocated on demand. Hence, a number of communications servers could be used, along with one or more database servers, to allow a fully redundant and scalable system. In addition, system management unit  597  monitors the status and connection of all the communication and database servers.  
         [0061]      FIG. 7  is a flow diagram illustrating the operations of an embodiment of the present invention when a call originating from a source on the circuit switched network  530 . For example, either telephone unit  510  or facsimile unit  520  can initiate the call.  
         [0062]     In block  700 , an incoming call signal is received by communications server  550  from switch  540 . The incoming call signal is initiated by telephone unit  510  or facsimile unit  520  over circuit switched network  530  and is routed to communications server  550  via switch  540 . Communications server  550  detects the incoming call signal using trunk interface  652 . Operation would continue with block  702 .  
         [0063]     Continuing with block  702 , trunk line interface unit  652 , in addition to receiving signals to indicate that there is an incoming call from switch  540 , also receives signals indicating the circuit destination address of the incoming call. The destination address is captured by trunk interface  652  and is determined by trunk line signaling using mechanisms such as direct-inward-dial, or dual tone multifrequency (DTMF) tones.  
         [0064]     Continuing with block  704 , to determine whether or not to process the incoming call, processor  651  searches the list of inbound addresses contained in memory subsystem  653  for the destination address. If processor  651  finds the destination address in the inbound address list, processor  651  will then look up the account status for the user who owns the inbound address to determine if the account of that user is a valid user account. In an alternate embodiment, the validation is performed through the use of a database maintained by a separate entity such as database server  595 . If the account is found to be inactive, communications server  651  will play a prepared message indicating that the number to which the incoming message was sent is an invalid account.  
         [0065]     In block  706 , once the validity of the user account has been established, processor  651  will attempt to allocate one fax/voice processing resource from set of fax/voice processing resources  654  and also determine the availability of other resources required for the receipt and processing of the incoming call. These other resources include the processing capacity of processor  651 , the storage capacity of memory subsystem  653 .  
         [0066]     If it is determined that the appropriate resources are not available, then the call will be routed to a different communications server that is capable of allocating the necessary resources. The routing of calls is accomplished by trunk line signaling via switch  540  and is managed by system management unit  597 .  
         [0067]     Also, it should be noted that the call will only come from switch  540  to communications server  550  if there are no problems with the line. Otherwise the call will get routed to a different communications server. In an embodiment, fault detection and correction happens in one of two ways. First, on the telephone network side, switch  540  can be set up to independently route a call to another line if it is determined that one of the lines is bad. Second, if communications server  550  detects that the trunk line coming into trunk interface  652  is down, communications server  550  will notify system management unit  597  to reallocate the users for whom communications server  550  is responsible onto another communications server. Thus, system management unit  597  will transfer the duplicate user information contained in database server  595  into a different communications server.  
         [0068]     In block  708 , communications server  550  “answers” the incoming call by having trunk interface  652  go “off-hook” on the trunk line.  
         [0069]     In block  710 , if the fax/voice processing resource of set of fax/voice processing resources  654  which is processing the call determines that the incoming call is a fax transmission, then operation will continue with block  712 . Otherwise, operation will continue with block  714 . For example, if the call is a fax, a fax protocol is initiated, and the fax is received by one of the fax/voice processing resources of set of fax/voice processing resources  654 . If the call is a voice call, the voice is recorded by one of the fax/voice processing resources of set of fax/voice processing resources  654 .  
         [0070]     In block  712 , the fax/voice processing resource of set fax/voice processing resources  654  responsible for processing the incoming call will perform the fax transfer and store the incoming message as a temporary file in memory subsystem  653 . In an embodiment, the incoming fax is saved into a file which follows the group 3 facsimile file format. Operation will then continue with block  716 .  
         [0071]     In block  714 , where it is determined that the incoming message is an audio message, the fax/voice processing resource of set of fax/voice processing resources  654  allocated to process the call will initiate an audio recording of the incoming voice message. In an embodiment, the audio message is digitized and stored in memory subsystem  653  as a temporary file in a pulse code modulated format. After the incoming call has been digitized and stored, operation will then continue with block  716 .  
         [0072]     In block  716 , trunk interface  652  will terminate the call. Operation will then continue with block  718 .  
         [0073]     In block  718 , the incoming message, which has been stored as a temporary file in memory subsystem  653 , is processed by processor  651 . In an embodiment, the temporary file is processed according to the type of the incoming call. If the incoming call was a fax transmission, then the temporary file, which has been stored as a group 3 facsimile file, will be converted into a file which follows the tagged image file format (TIFF), or a format that is suitable for transmission over WAN  580 . Optionally, the temporary fax file can also be compressed at this stage. If the incoming call was an audio message, then the temporary file would be compressed using a compression scheme such as the scheme defined in the global system for mobile-communications (GSM) standard. In alternate operations, compressing and other processing of the incoming message is performed as the same time the incoming message is being received and being placed in memory subsystem  653 .  
         [0074]     In block  720 , communications server  550  uses the inbound address to determine the set of final destination addresses, which are destinations on WAN  580  (i.e., the packet switched network), to send the processed incoming message. Communications server  550  then sends an electronic mail (e-mail) with the processed incoming message as an attachment to all the destinations in the set of final destination addresses.  
         [0075]     For example, the e-mail containing the attachment is transferred to, and stored in, a server such as mail server  560 , The e-mail is then retrieved by client  590  whenever the user wishes. In an alternate embodiment, client  590  can retrieve the e-mail directly from communications server  550 , without the storing operation of mail server  560 .  
         [0076]     While the present invention has been particularly described with reference to the various figures, it should be understood that the figures are for illustration only and should not be taken as limiting the scope of the invention. Many changes and modifications may be made to the invention, by one having ordinary skill in the art, without departing from the spirit and scope of the invention.