Understanding SMTP in DotNetNuke

DNN SMTP Settings

DNN Websites have the ability to configure in the host settings an SMTP server. When a DNN email is generated from the DNN website, it will attempt to send mail through this SMTP server.

In order that your DNN website can successfully send the email, the SMTP server must allow the email message to be received. Typically this is done in one of four ways.

  1. The SMTP server is configured for Open Relay (This should NEVER be done unless you have an external firewall blocking all external SMTP connections. Otherwise your mail server will become a spam server within hours)
  2. SMTP Authentication – Typically SMTP servers are configured to allow users with a valid username and password to authenticate themselves. Once they have been authenticated, they can communicate email messages through the SMTP server. This is the same way most ISP’s work their mail servers. The idea is that only users who are customers of the ISP will allow email to be sent from their SMTP servers.
  3. Selective Open Relay. The administrator of the SMTP server can also allow Open Relay (same as 1 above) from selective IP addresses. Any communication from an IP address that is configured to allow open relay will be accepted by the SMTP server.
  4. Local Host – If your website has it’s own SMTP server configured, typically it will allow email message to be sent form it’s self.

To correctly configure your DNN SMTP settings, you need to understand what method of communication has been configured in the SMTP server you are trying to set DNN to access.

Here is the process you would configure from above.

  1. Enter the IP address or valid domain name for the SMTP server, nothing more to do if open relay is allowed. (Still not recommended)
  2. Enter the IP address or valid domain name for the SMTP server, and the valid user name and password as would be used to communicate with the SMTP server. This is where you get to use the user name and password setting in DNN.
  3. Ensure that the SMTP administrator has allowed the IP address your DNN website uses to have open relay status. Then just enter the IP address or domain name of the SMTP server in your DNN host settings.
  4. Configure your DNN host settings to have “localhost” in the DNN SMTP server settings are.

Problems.
There can be some issues that get confusing with the different methods.

  1. Open relay mail servers will be attacked by spammers very quickly. They are always on the lookout for mail servers that they can abuse. It is never recommended to have your mail server on the internet and in open relay. Additionally your mail server will be blacklisted by other mail servers if found to be in open relay.
  2. SMTP Authentication  can still be restricted to certain IP addresses. Many ISP’s will allow you only to use their mail servers while you are a client of their AND connecting to their mail server from an IP address they own. So thing will work in your Email applications while you are connecting to the internet via their dialup or high speed connection, but as soon as you move away from a connection provided by them, you will not be allows to connect to their servers, let alone Authenticate.
  3. Even if your ISP has allowed relay from the address that your mail server is run form, there may be a firewall or block on the normal port that the SMTP servers are typically configured to use. Port 25. If a firewall exists between your web server and the mail server, it must be configured to allow traffic over port 25.
  4. You may have web server configured with an SMTP server on the same system. Yet have it be blocked over port 25 for outbound communications. Some ISP’s block port 25 to curb the flow of virus email messages. You need to be sure that your ISP that provides connection to the internet for your web and SMTP server is not blocking port 25.

How to get really confused.
Often mail servers will allow you to send email messages to email addresses on that SMTP server, even though they do not allow you to send mail out. So if you have a web application configured to send email to yourself, and the SMTP settings you use in the DNN host settings are for the SMTP server that runs the same email address you will have success.
Yet when you change the email address in the web application, you can no longer send email, and the web application appears to fail. This is still an SMTP configuration error on your website. You will need to find a method above to solve the issue.

Podcast Discussing This:

Installing The Module

Note: Your Download Package Needs to be unziped before you start the install process. The file that is installed to the DNN site as a module is named with a "xxx PA.zip"


Motion Demo Here

1. Login to your DNN site as a system HOST

2. Under the host menu, select MODULE DEFINITIONS

3. From the Module Definitions menu, select INSTALL NEW MODULE

4. BROWSE and select the Feedback Designer xx.xx.xx PA.ZIP file for uplad. Then select SAVE FILE.  Note that in some cases you may need to extract this PA files from a password encripted package zip.

5. Check the list of processes that follows for RED warnings and errors.

6. Your module is ready to be access and used on any DNN page in your site or child portals.

 

Installing a Module in DotNetNuke 5

reCcaptcha in DotNetNuke Login and Registration

imageRecaptcha is the Google service that provides protection against machine entry to your website forms and services.

Our Advanced Login Module for DotNetNuke allows the use of recaptcha in your website login and registration process. However until our latest release, we did not allow that recaptcha field to be customized according to the recommended settings of themes explained in the Google Labs setup.

With our latest release, you can now customize the recaptcha service to meet the look and feel you require for your DotNetNuke website.

Using a Hex (html) color code as a UIColor

hash keyWe had a requirement to read from a plist a hex color code eg. #168240 and translate that to update a navigation controller’s navigation bar background color.

Below are two ways that were presented.

 

First (not the best) was this method using a macro, but this wasn’t obvious to us how to use it with an NSString value for the color code (we couldn’t hard code it).

//RGB color macro
#define UIColorFromRGB(rgbValue) [UIColor \
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

and then use in code like this:

tintColor = UIColorFromRGB(0x168240);

 

Second (preferred) was to create a method that returns a UIColor with parameters allowing for an NSString to be passed.

-(UIColor *) colorForHex:(NSString *)hexColor {
hexColor = [[hexColor stringByTrimmingCharactersInSet:
[NSCharacterSetwhitespaceAndNewlineCharacterSet]
                 ] uppercaseString]; 
   
    // String should be 6 or 7 characters if it includes ‘#’ 
    if ([hexColor length] < 6)
return [UIColorblackColor]; 
   
    // strip # if it appears 
    if ([hexColor hasPrefix:@"#"])
hexColor = [hexColor substringFromIndex:1]; 
   
    // if the value isn’t 6 characters at this point return
    // the color black
    if ([hexColor length] != 6)
return [UIColorblackColor]; 
   
    // Separate into r, g, b substrings 
    NSRange range; 
    range.location = 0; 
    range.length = 2;
   
    NSString *rString = [hexColor substringWithRange:range]; 
   
    range.location = 2; 
    NSString *gString = [hexColor substringWithRange:range]; 
   
    range.location = 4; 
    NSString *bString = [hexColor substringWithRange:range]; 
   
    // Scan values 
    unsignedint r, g, b; 
    [[NSScannerscannerWithString:rString] scanHexInt:&r]; 
    [[NSScannerscannerWithString:gString] scanHexInt:&g]; 
    [[NSScannerscannerWithString:bString] scanHexInt:&b]; 
   
    return [UIColorcolorWithRed:((float) r / 255.0f) 
                           green:((float) g / 255.0f) 
                            blue:((float) b / 255.0f) 
                           alpha:1.0f]; 
   
}

And access it like this:

tintColor = [self colorForHex:@"#168240"];

Event Woodfired Pizza Catering Service Melbourne

imageToday we launched a new website for Event Woodfired Pizza a Melbourne based catering service that provides services throughout Melbourne and Victoria.

The company provides a range of woodfired pizza options, and is a terrific option of catering of parties and public events.

They have two domains: www.eventwoodfiredpizza.com  and www.eventwoodfiredpizza.com.au

Both sites will point to their website

If you are looking for:

  • Catering for parties functions or events anywhere and anytime;
  • Catering for 50 to 500 people;
  • Over 20 different gourmet pizzas to choose from;
  • Market Fresh Ingredients;
  • Try our delicious dessert pizzas;
  • We can create a "themed" pizza unique to your event;
  • Fully serviced Liquor License;

Then we suggest this service.

Problems with Windows Closing Programs and Logging off

Microsoft Fail of the Week! – Where are they going with all this?

I’m rather sick of Microsoft “fixing” things in version updates to Windows. Here is one I just love to hate.

I’m RDP into a server.

Doing some server work.

I finish and click log off. (Windows 2008 R2)

image

I get a confirmation about it. – YES

image

I get another confirmation about it – YES and Force

image

Then is just sits there forever.

Now I remote check the server performance. Guess what. the server load is through the roof. And stays that way for a considerable amount of time.

image

Remote shutdown is disabled, and failing.

image

The machine is in some sort of Microsoft Hell.

Now it may be me, but did programs not shutdown correctly for like the last 15 years of Microsoft Windows, when you logged off.

As a server administrator, am I so daft that I need a reminder about logging off closing my programs, and a way that no earlier versions of Windows did, but now suddenly they have to invent a jquery style splash page that DOES NOT WORK.

Here is a tip for Microsoft. When you are working on new versions of software. MAKE THEM BETTER not worse than your last version!

Now when I next login, it is giving me some Shutdown Event Tracker errors:

image

Where is the option for “It’s a busted ass Microsoft Bug”

image

So I’m forced to comment in the usual server administrator way.

image

Really why force me to type anything. I’m not a child!

Then I get this:

imageimage

No message, no “On solution found” it just disappears from screen. WTF.

It’s like they have beat me with a stick till I have to go and try a Mac. Honestly! Who’s running that place?

This looks serious about something. Can’t imagine it is GOOD QUALITY SOFTWARE! You?

Written with Windows Live Writer. The only good new software to come out of Microsoft in the last 10 years. Well done to the one dude that wrote it. Don’t let me screw it up into the future!

Alternatives to SVN Subversion for xCode Development

imageDo you need SVN or is there another way to manage code?

We use and manage an SVN server dedicated to our xCode development, but mostly because we can, not because we need to. We have the servers, knowledge and experience to do this so we did.

I thought I would suggest another way to share code among multiple developers, and still keep thorough backups of all the things you need.

There are a few exceptions and we will list them first.

1. Technically SVN allows for two people to work on the same code at the same time, and for those changes to be mashed together. Sort of. However this is not really the case. SVN does such a lame job of mashing when compared to some TFS systems we have used for years, that we would advise strongly against thinking it will solve this problem.

For this reason, we treat SVN as a single user project for modifications, but that all users can update their local copy of the code any time, and test locally.

2. SVN encourages you to keep the server repository separate and Update or download a local version for working. “A working copy”, that you can then update back to the server when ready for check in. The process works well, and forces some dev discipline.


The suggested alternative to SVN with xCode working remotely for developers

What you need:

Skype, DropBox, Time Capsule

image imageimage

1. Create a DropBox account and share access to this for your developers. If you all use the same account, you can probably do this for free.

Drop Box will cache a folder to the cloud, and share that back to all users with the same account. Great service that just works!


2. Skype lets you talk to your other developers. Not really necessary, but a lever of communication is needed to ensure that you are not on the same project at the same time. This is nothing new to SVN that suffers the same problem and requires the same communication.


3. Time Capsule – This is to perform backups that are easy to revert to any point in time. We suggest that each developer has their own Time Capsule

Here is how it works

 

  1. Setup a Working folder for xCode, with a sub folder by developer name. Eg xCode Working /My Name. Setup a folder for each developer. We will call this the working folder.
  2. Setup a folder system / single folder and one sub folder for all your xCode projects. E.G. xCode Dev  with sub folders /Project1  etc
  3. Setup a different folder and sub folders for supporting files. Original images, notes etc that relate to the same projects.
  4. Make sure that Drop Box is syncing these folders and all sub folders.
  5. Drop your projects into the related xCode project folders and sync to the cloud.
  6. When it is time to work. Clear your working folder of all files.
  7. Grab a copy of your xCode files from the project folder, and drop it into your working folder.  Inform others that you have the folder checked our, by changed the folder name to: “/project1 – checked out to me” Work away.
  8. If you are online, drop box will be syncing everything you do. No problem as the xCode changes are usually small. Either online or off. Not really a big deal.
  9. When you are ready to submit your changes back to the “Server” just copy all files back to the folder that you changed to – “checked out to me”. And rename it back to it’s original name.
  10. Sync to dropbox, or let is be syncing all the time is even better.
  11. Make sure that your time capsule is backing up periodically.

Rules

1. The more connected and syncing to drop box the better.

2. Don’t work on code that is marked as check out to others, but you can grab a copy from any time and look / play with it in your working directory. You can even copy from someone’s working directory to yours.

3. Don’t check in over others checked out projects.

4. Be disciplined about notes and image originals into the correct notes folder.

That’s is. You own automates SVN in the cloud.

Disaster / Backup restore.

Easy. When you find a problem, you can use your time capsule to go back to any point in time for any project for any user directly from your time capsule. Any other team member with a time capsule can do the same.

The benefits are huge.

1. It actually gives you more protection and backup and SVN.

2. You all automatically have the latest code shared via Drop Box.

3. It costs almost nothing.

4. You have total control.

5. It works well.

xCode 4 and SVN subversion server IP address change

imageRecently we needed to change IP addresses on our SVN subversion server. We have blogged before about the SVN xCode Tips here.

What we did now though was to change the IP address of the SVN subversion server after we had already configured the connection to the server on our Mac computers.

The change process was surprising to us, and here is why.

1. We fully expected to have to much around with the entire connection thing. We were ready to refer to our above blog and re-establish connections.

2. When we fist established the new IP, and verified that it had propagated to the updated DNS listings etc, we found that xCode did not connect.

By chance we were short of time. So we rebooted the computers, and tried again. Still verifying that the IP resolved correctly etc. No joy!

With time constraints that day, we put it down and came back it it a day later.

It worked!


We effectively did nothing, and it just worked!

The strange thing was that the expiry and update of the original IP had passed when we first tested. So it should have worked first time.

We can only guess that for some reason the time between updates of the IP stored by xCode, must be longer than the TTL record of the DNS server (or something). In any case, just cool your heels for some time, and wait to see what happens.

Removing IP from AOL email Black List postmaster

I’m finding the AOL process really really annoying. We have been trying to clear up blacklist and reputation problems with a new IP range that was previously abused.

AOL have some tools that pretend to help. What you need to know is this.

1. Ensure your mail server IP has a RDNS – so when you do an NS lookup on the IP address it will show a name, like smtp.interactivewebs.com

2. Setup an email account like abuse@ or postmaster@  that domain. Make sure you get that mail.

3. Ensure that you verify with AOL that you are the admin for that RDNS lookup name. That is by submitting a ticket called Feedback Loop here: http://postmaster.aol.com/SupportRequest.FBL.php

4. Wait till they verify your Feedback Loop. AKA. that you are getting mail on that domain.

6. Use this link: http://www.mxtoolbox.com/SuperTool.aspx?action=mx%3aaol.com
to work out the IP of an AOL mail server.

7. Work out what code error is given when you try to connect from your mail server using Telnet. Follow these instructions. http://support.microsoft.com/kb/153119 but use the IP address and port 25 of the AOL mail server from step 6 above.

8. Look at the error result and compare it to this page: http://postmaster.aol.com/Postmaster.Errors.php

9. Follow the support request process from that page, to submit a ticket to have them fix things up.

Easy as that.!


Imagine if we had to do that crap for every email domain in the world. This was a recent blog from AOL about their update:

http://postmaster-blog.aol.com/2011/05/05/general-update/

We are in the process of automating email problem report resolution. This is a mid-term project, and is being implemented in stages on a queue-by-queue basis. (Ex: Each unique error code type represents a different queue, as do feedback loop and whitelist requests. http://postmaster.aol.com/Postmaster.Errors.php )
The last couple of months were spent migrating our sundry ticketing systems onto one common platform — essentially readying a back-end for the front-end logic flow that you will interface with. We are excited to finally be addressing the part of this project that will offer, in most cases, immediate resolution to your issues.
We are starting with router-level queues, the first of which will be RTR:BB errors. I will post on our progress as we push the code into production, along with what ticket submitters should expect with the automated process specific to the queue addressed. If you are seeing problems with the queues in transition, please comment on that particular blog post, and we’ll take a look.
Meanwhile, our Postmaster staff will continue handling every ticket we receive.
Thanks for your patience and support during this transition!

 


This was my comment.

1. Good that you are improving things. Sucks that your process is so stupid in the first place. An example of how frigging annoying I am finding things.
We at: http://www.interactivewebs.com have been forced by a chapter 11 of an upstream provider to move all our servers to a new IP range.
First thing we did was to setup RDNS and check mail reputation (on all the major Black Lists, and senderbase.org). What we found was that the IP range has been abused. So we set about cleaning that up.
Naturally we checked AOL, and found that the IP was "undisclosed" reputation. Helpful Right… NOT!
But it does not show AOL was listing it.
So we move and fire up services. THEN and only then do we find out that AOL does have the address on a BL and mail cannot be delivered.
How about tools that work, and a process that works to allow proper checking/de-listing.
The ironic part of dealing with your 1990 process, is that it really does not work as well as other systems. AOL users get more spam than many other reputable spam systems. There is even free spam software services that do better.
So why stick with such a lame process, when the end result is HEAPS of false positives?

Now Auto Tweet Plugin to our WordPress Blog tli.tl Auto Twitter Poster

wordpress-plugin.jpg

We have been using the Feed2Tweet plugin on our WordPress blog site at: http://www.interactivewebs.com/blog

We found that in recent weeks, it has stopped posting data when we blogged with the Windows Live Writer plugin that we normally use. So we decided to find a new plugin to take care of the auto tweeting.

We came across the “tli.tl Auto Twitter Poster” plugin. That from all accounts should work well, if only a little delayed.

The post system configures with a Twitter API registration (normal for this sort of thing), and appears to work well.

Note

There are two versions on the plugin, one is listing as version 3.8 (we found that did not work) the other is the 3.8.1 showing as separate plugin. We found this tested fine.