Sending mail in PHP with remote mail server and reverse DNS lookup - php

I am sending mail in PHP, but I use a remote mail server.
I have three questions:
1) In my PHP mail code, should I use the server settings for the local mail server or the remote mail server and is there a difference?
2) If I use the remote mail server, won't the mailserver domain IP address not match the real domain's IP Address (potentially going to Spam folders)?
The problem I am having might be specific to my host, mail server, version, or mail plugin.
I am trying to use a plugin called Swiftmailer to send mail through my local mail server, which works on port 25 with no SSL. When I switch the port to 465 (per my host's recommendation) and change it to SSL, I get a refused connection. (I believe this is because I don't have SSL added to this server yet)
3) Does SSL really matter? Should I just use port 25 without SSL and save myself the trouble? (I care about security, not server requirements)

Related

PHP SwiftMailer - Server with multiple IP addresses

I've got an already configured mail server with 12 IP addresses.
Do I need any special configuration of SwiftMailer to use it properly ?
Or its only my server job to use these IP addresses ?
You should be connecting to your mail server with SwiftMailer using it's hostname rather than one of the IP addresses and you will be fine.

GAE Sending emails via SMTP

Reading up on GAE as a possible alternative to dedicated hosting (or VPS)...
Seems I would need to re-write a bit of code, if I had modules which relied on SMTP. Does this mean that even if I connected to a remote SMTP server that code would need to change to an HTTP API (assuming one is even provided by an third party SMTP provider such as smtp.com).
Yes - AppEngine/PHP does not yet support sockets and thus you can not connect to external SMTP servers. Also, even with sockets you would not be able to use SMPT on port 25, but authenticated SMTP on port 587 - see socket limitations.
OTOH, you can send email from AppEngine via the Mail API.
If you still want to send email via an external mail provider, you need to choose one that supports HTTP API, for example Amazon SES.

Sending Mail using PHP Mail function - Local mail server?

I am trying to send an e-mail from localhost but am getting the error:
Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set().
Does this mean i need to set up a local mail server?? and if so how and which one is easiest.
Thanks in advance
Paul
This is what I use, but it's for testing purposes only:
http://www.toolheap.com/test-mail-server-tool/
There's almost no configuration, and I got it to work right out of the box (on Win7) after failure with several other mail servers. It does not send the actual mail, but stores it as an .eml file. This is great for testing mailing lists for instance, where you don't really want to send the 2000 emails, but want to get a realistic result from your application.
It might look like garbage, but it's been working great for me.
Yes, it does, and if you want to send mail to an outside email address (and not a user local to the system, it is annoyingly difficult).
Most hosting companies (e.g. GoDaddy) have this setup for you, so PHP's mail() function works without you needing to do anything.
If you're configuring it on your own system, you might want to consider (a) configuring sendmail to use an alternate SMTP gateway (I frequently use Gmail) or (b) a complete alternative to sendmail (Zend Mail looks promising.)
If you are using Linux, there is usually no need to set up a a mail server,
If you are using Windows, yes, you do need to set up a mail server
If you are interested in just sending mail, you can by SMTP protocol use any SMTP server. Here is a tutorial to setting up PHP to use a remote SMTP server.
Yes, you need a mail server to be able to send mail, but even if you do, you are not going to be able to send to addresses outside of you local network as mail from your computer will be blocked by all recipients for spam reasons.
You could use the pear mail function to connect to an external smtp providor like gmail to send the mails for you. More info here and here.
smtp4dev is in my opinion the best tool for capturing local SMTP traffic on Windows.
It listens SMTP on localhost port 25 and pops up a notification every time a new mail is posted (it doesn't actually forward the mail to its recipient). You can then open the message in your favorite mail agent or save it to a file.

PHP mail() not working

I'm building a site on my home computer using MAMP. The code I'm using employs the PHP mail() function to send emails, but whenever I test it, the mails aren't getting sent.
My computer is connected to the net, but I'm wondering if there's something about local hosting that prevents mails from getting sent. I'm not getting any kind of error message.
Any ideas?
PHP can send mail in one of two ways.
The first, and the default on non-Windows systems, is to use the local mail transfer agent installed on the system. This would be "sendmail" or an application compatible with it, the most popular probably being postfix.
The other is to connect via SMTP to some mail server.
You will either need to install a mail transfer agent on your local system (and set it up correctly), or edit PHP's configuration to specify an SMTP server address and port.
Yes, there are things that could block locally hosted mail. For one, your ISP could block SMTP to servers other than the ISP. ask your ISP support if they block SMTP... Or try telexing so someone's MX port 25 and do you get a response?
If your ISP blocks smtp you can still send the mail, but first you must relay that email through a hosted email server like your ISP mail server. This process is called 'smart hosting' and you can search for more info.
Even if you are not blocked on port 25, many sites will refuse or lose smtp traffic that originates from a dynamic or residential IP address, so again the smart host suggestion.
Also I suggest not using the built in mail() function in PHP... Use something that replaces and improves it like http://pear.php.net/package/Mail or http://sourceforge.net/projects/phpmailer/. Again, use the SMTP method as it is way more reliable than direct sending or calling Sendmail.
It is important to confirm this problem, doing SMTP manually over telnet. That way you isolate the problem from PHP. I did ISP support for years and saw this question lots. Most people setup php and mail correctly but get stuck on a background network issue with SMTP.
If you have Wireshark installed, it can record network traffic and you might see the actual SMTP traffic, for example the remote server may be refusing your connection. Wireshark is helpful but not required to solve this though. Good luck.
You need to setup SMTP server in order to be able use mail function, or you can use PHPMailer class, with it you can avoid using mail function and setup problems, PHPMailler need socket extension to be loaded in order to function correctly.

sendmail with a 'different' SMTP host solution : pro and cons

What are the pro and cons of using the SMTP host option of my choice?
Do sending mails from localhost require a specific SMTP host?
Is there any discernible difference on the receiving end between a mail sent via the server where the site resides and a dedicated mail server?
thanks
Luca
This depends if localhost refers to a public server with a proper DNS and reverse DNS entry, or if localhost is a machine you operate from a residential Internet Service Provider.
If localhost is a real server, outbound mails may be delivered a little faster if sent from the same server, and configuration in PHP & others is generally a lot simpler to setup.
If it isn't a proper server though, especially having proper DNS entries, the likelihood of much mail from it actually reaching recipients is low. Most receiving SMTP servers will reject mail if they cannot validate the source via a reverse DNS entry.
If you use a dedicated mail server, you get the benefit of all the inbound & outbound logging being on the same machine, and when receiving SMTP hosts lookup your domain's MX record in DNS, it will already be configured as the mail server rather than the web server. But this just requires a little more configuration on the web server, especially if the mail server requires authentication from the web server rather than treating it as a trusted relay sender.

Categories