We need a signup module for a DotNetNuke website.
You need to collect and validate user input against the users email server by using Whois and DNS lookups to find the correct server address. The user information will need to be stored in to two seperate databases, one Micrsoft SQL 2005 on windows and one MySQL version 5 on a Linux server.
An outline of what will be needed is:
Get user information including email address.
Test email address and get smtp status.
status = 500 permanent error ask for correct email address.
status = 450 temporary error warn of error but continue, you will need to retest later. This may need a scheduled task to be carried out later against the data entered by the user.
Perform Whois on domain, display ownership information and ask for comfirmation that this is the correct domain.
Perform DNS lookups and find mx records, test lowest preference record accepts email for domain and display with confirmation that this is where they want their email delivered.
Ask how they want to login to our system.
1. Use a POP3 login against their existing server
2. Use an IMAP4 login against their existing server
3. Separate (external) user login that will be stored in our database.
For option 1 & 2, nslookup on domain and check for mail, pop, imap, smtp, records and display page for the user to enter their mail login name and password with the mail records found by nslookup or user input. Test the login against the server with these details.
For for option 3 get a password to go with the email address they have already entered.
Display summary of the information collected and ask if to proceed.
Enter the collected information in the various tables of an MSSQL database using stored proceedures that you create with full validation of input. The tables will be seperate from the DNN user system, but we will also need a native DNN account creating too.
Enter some of the data will also need posting into several tables within a _MySQL5_ database on a seperate Linux server.
Dispaly a final page and email the user a confirmation message.
The module will also enable a sucessful user to change their details entered previously, to keep them up to date.
Depending on how the systems functions, the outline above may need to be modified.