To send a mail from PHP encoded as UTF-8 is fairly easy to do by modifying the headers.
//Sender with special chars (UTF-8) encoded
mail('firstname.lastname@example.org', '=?UTF-8?B?'.base64_encode($subjectString).'?=', $messageString, "MIME-Version: 1.0\r\nContent-type: text/plain; charset=UTF-8\r\n");
//Sender not UTF-8 encoded
mail('email@example.com', 'firstname.lastname@example.org', $messageString, "MIME-Version: 1.0\r\nContent-type: text/plain; charset=UTF-8\r\n");
On *nix environments it is possible to forward the mail to one account to another user (or another email address if external mail is supported).
This is done by adding the recipient in a file called .forward in the home directory.
Example To simply forward to another address:
user@server$ echo email@example.com > ~/.forward
user@server$ chmod go-w ~/.forward
In order to forward to several addresses coma (,) is used as a delimiter between the different recipients.
Example To forward to two addresses at the same time:
user@server$ echo firstname.lastname@example.org,email@example.com > ~/.forward
user@server$ chmod go-w ~/.forward
Sometimes it is nice to send a log or some other file as a email to someone (or a part of a file)
cat myfile.txt | mail -s 'SUBJECT' firstname.lastname@example.org;
Change myfile.txt, SUBJECT and email@example.com to something useful.
It is also possible to send the output of a command to someone
ps -ef|mail -s 'SUBJET' firstname.lastname@example.org;
To delete one message from the exim queue
To find the ids of all qued mails
If you wish to delete all the messages to a specific email recipient.
exiqgrep -i -r '<email@example.com>' | xargs exim -Mrm
Of if you wish to delete all messages that were sent from a specific email address.
exiqgrep -i -f '<firstname.lastname@example.org>' | xargs exim -Mrm
To re-configure exim4 on a Debian system just run
“$ dpkg-reconfigure exim4-config”
This will start the configuration process and you will be guided trough the configuration process.
A fairly common issue on the Internet is that some routers can’t handle window scaling.
This will might give some odd messages to email servers (such as not being able to send mails over a certain size to one receiving mail server)
On option is to turn off window scaling by editing sysctl.conf and adding the following lines
# Uncomment to turn off window scaling (most usefull for linux MTA)
net.ipv4.tcp_window_scaling = 0
A warning about doing this; In the long run throughput will not be optimal on this server, but sending mails should work better (so best used on a dedicated mail server).
To send email to several recipients use
name <email@example.com>, name2 <firstname.lastname@example.org>
the part inside the brackes (< & >) is the adress, the part before the < is the name shown as the recipient. The separation char for several addresses is “,”
Ran into this error today on a server. Some mails got through but some was not getting through.
Check that /etc/hosts has a FQDN (fully qualified domain name).
Also check the size of the mails being sent, in my case the issue was that mail was to large for the receiving server thus this error message was produced at the sender.
sendmail expects to the machine to have a FQDN (fully qualified domain name).
If it does not have that (type “hostname” to check what name the machine has) sendmail will complain about this and take a loot of extra time trying to find it.
To use a FQDN edit “/etc/hosts” and change [something] to [something.yourdomain.com] and this will go away. Updating “/etc/hostname” at the same time might be a good idea; don’t forget to run “/bin/hostname -F /etc/hostname” after updating /etc/hostname.