MAMP Pro: Difference between revisions
Line 63: | Line 63: | ||
Dec 12 09:11:28 Tonne postfix/qmgr[31997]: EF76490ECED: removed | Dec 12 09:11:28 Tonne postfix/qmgr[31997]: EF76490ECED: removed | ||
</syntaxhighlight> | </syntaxhighlight> | ||
The problem with the above is that the from field is not field correctly. | |||
The PHP-mail command has the following signature and parameters: | |||
* boolean mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] ) | |||
Parameters: | |||
* '''$to''' Receiver, or receivers of the mail. <br>The formatting of this string must comply with » RFC 2822. Some examples are: | |||
** user@example.com | |||
** user@example.com, anotheruser@example.com | |||
** User <user@example.com> | |||
** User <user@example.com>, Another User <anotheruser@example.com> | |||
* '''$subject''' Subject of the email to be sent. (Subject must satisfy » RFC 2047). | |||
* '''$message''' Message to be sent. <br>Each line should be separated with a CRLF (\r\n). Lines should not be larger than 70 characters. | |||
* '''$additional_headers''' (optional) String to be inserted at the end of the email header. | |||
** This is typically used to add extra headers (From, Cc, and Bcc). Multiple extra headers should be separated with a CRLF (\r\n). If outside data are used to compose this header, the data should be sanitized so that no unwanted headers could be injected. | |||
*** When sending mail, the mail must contain a From header. This can be set with the additional_headers parameter, or a default can be set in php.ini. | |||
*** Failing to do this will result in an error message similar to Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing. The From header sets also Return-Path under Windows. | |||
Note: | |||
<br>If messages are not received, try using a LF (\n) only. Some Unix mail transfer agents (most notably » qmail) replace LF by CRLF automatically (which leads to doubling CR if CRLF is used). This should be a last resort, as it does not comply with » RFC 2822. | |||
additional_parameters (optional) | |||
<br>The '''$additional_parameters''' parameter can be used to pass additional flags as command line options to the program configured to be used when sending mail, as defined by the sendmail_path configuration setting. For example, this can be used to set the envelope sender address (-fxxx@yyy.zz). | |||
The mail '''from''' has to be set twice to be absolute sure it will work correctly: | |||
* In the '''$additional_header'''. Please note the specific formatting of this field. | |||
* In the '''$additional_parameters'''. Please not the format: {{FormFCT|9|blue|-ffrom@xxx.nl}} without as space between -f and the email address (i.e. -fharm@harmfrielink.nl). | |||
== See also == | == See also == |
Revision as of 12:00, 7 September 2016
If you try to send a mail with MAMP Pro you will notice that this is not working out-of-the-box. MAMP Pro uses postfix as you can find on the last tab of the MAMP Pro app.
- Just fill in 'gmail.com' at the Domain of outgoing mail and restart the server.
- Now open the mail log file which is located in the /var/log directory and you will see:
<syntaxhighlight lang="bash" line> May 28 16:09:39 Harms-MBP-3.fritz.box postfix/master[78220]: fatal: bind fe80::1 port 25: Can't assign requested address May 28 16:09:49 Harms-MBP-3.fritz.box postfix/master[78221]: fatal: bind fe80::1 port 25: Can't assign requested address </syntaxhighlight> The reason of these errors is located in the wrong binding to the ipv6 instead of the ipv4.
To change this:
- Edit the file main.cf located in the /etc/postfix/main.cf in terminal.
- Type
$ sudo nano /etc/postfix/main.cf
- Add the line
inet_protocols = ipv4
- Save the file in nano.
- Stop postfix:
sudo launchctl stop org.postfix.master
- Start postfix:
sudo launchctl start org.postfix.master
- Now look in the mail.log
tail -f -n 65 /var/log/mail.log
- Resulting in
<syntaxhighlight lang="bash" line> May 28 16:28:29 Harms-MBP-3.fritz.box postfix/master[78439]: fatal: bind fe80::1 port 25: Can't assign requested address May 28 16:28:40 Harms-MBP-3.fritz.box postfix/master[78440]: daemon started -- version 2.11.0, configuration /etc/postfix May 28 16:29:26 Harms-MBP-3.fritz.box postfix/master[78440]: terminating on signal 15 May 28 16:29:26 Harms-MBP-3.fritz.box postfix/master[78443]: daemon started -- version 2.11.0, configuration /etc/postfix </syntaxhighlight>
- Fixed, the deamon has been started (see line2).
StartTLS
The mail.log is located in the /var/log.
- After fixing the above issue the next problem is that the name of the host is taken as default name for the mail-send-account.
- In the example below look for:
- status=bounced
- Must issue a STARTTLS command first.
<syntaxhighlight lang="bash" line> /Applications/MAMP/www/formula:HaFrMpro$ cat /var/log/mail.log Sep 6 10:00:19 Harms-MBP-2 postfix/pickup[15361]: 35FBB3FB6E3F: uid=501 from=<HaFrMpro> Sep 6 10:00:19 Harms-MBP-2 postfix/cleanup[15362]: 35FBB3FB6E3F: message-id=<20160906080019.35FBB3FB6E3F@mailer.gmail.com> Sep 6 10:00:19 Harms-MBP-2 postfix/qmgr[14705]: 35FBB3FB6E3F: from=<HaFrMpro@gmail.com>, size=902, nrcpt=1 (queue active) Sep 6 10:00:19 Harms-MBP-2 postfix/smtp[15364]: 35FBB3FB6E3F: to=<harm@harmfrielink.nl>, relay=smtp.gmail.com[74.125.136.109]:25, delay=0.55, delays=0.09/0.06/0.35/0.04, dsn=5.7.0, status=bounced (host smtp.gmail.com[74.125.136.109] said: 530 5.7.0 Must issue a STARTTLS command first. id1sm31874130wjb.21 - gsmtp (in reply to MAIL FROM command)) Sep 6 10:00:19 Harms-MBP-2 postfix/cleanup[15362]: BA5023FB6E42: message-id=<20160906080019.BA5023FB6E42@mailer.gmail.com> Sep 6 10:00:19 Harms-MBP-2 postfix/bounce[15365]: 35FBB3FB6E3F: sender non-delivery notification: BA5023FB6E42 Sep 6 10:00:19 Harms-MBP-2 postfix/qmgr[14705]: BA5023FB6E42: from=<>, size=2858, nrcpt=1 (queue active) Sep 6 10:00:19 Harms-MBP-2 postfix/qmgr[14705]: 35FBB3FB6E3F: removed Sep 6 10:00:20 Harms-MBP-2 postfix/smtp[15364]: BA5023FB6E42: to=<HaFrMpro@gmail.com>, relay=smtp.gmail.com[74.125.136.108]:25, delay=0.31, delays=0/0/0.25/0.05, dsn=5.7.0, status=bounced (host smtp.gmail.com[74.125.136.108] said: 530 5.7.0 Must issue a STARTTLS command first. b128sm25177085wmb.21 - gsmtp (in reply to MAIL FROM command)) Sep 6 10:00:20 Harms-MBP-2 postfix/qmgr[14705]: BA5023FB6E42: removed </syntaxhighlight>
CYREN - Greylisted
<syntaxhighlight lang="bash"> Sep 6 11:01:51 Harms-MBP-2 postfix/smtp[17040]: 94CD13FB74AD: host mxcluster2.one.com[91.198.169.9] said: 450 4.7.1 <harm@harmfrielink.nl>: Recipient address rejected: 95.90.202.130 temporary greylisted by CYREN IP reputation (in reply to RCPT TO command) </syntaxhighlight>
Example successful send
<syntaxhighlight lang="bash" line> Dec 12 09:11:26 Tonne postfix/pickup[31994]: EF76490ECED: uid=502 from=<from.address@gmail.com> Dec 12 09:11:26 Tonne postfix/cleanup[31995]: EF76490ECED: message-id=<20141212081126.EF76490ECED@mailer.gmail.com> Dec 12 09:11:27 Tonne postfix/qmgr[31997]: EF76490ECED: from=<from.address@gmail.com>, size=391, nrcpt=1 (queue active) Dec 12 09:11:28 Tonne postfix/smtp[31998]: EF76490ECED: to=<to.address@gmail.com>, relay=gmail-smtp-in.l.google.com[74.125.136.27]:25, delay=2.2, delays=1.1/0.02/0.38/0.69, dsn=2.0.0, status=sent (250 2.0.0 OK 1418371832 k5si1095875wjf.30 - gsmtp) Dec 12 09:11:28 Tonne postfix/qmgr[31997]: EF76490ECED: removed </syntaxhighlight>
The problem with the above is that the from field is not field correctly. The PHP-mail command has the following signature and parameters:
- boolean mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
Parameters:
- $to Receiver, or receivers of the mail.
The formatting of this string must comply with » RFC 2822. Some examples are:- user@example.com
- user@example.com, anotheruser@example.com
- User <user@example.com>
- User <user@example.com>, Another User <anotheruser@example.com>
- $subject Subject of the email to be sent. (Subject must satisfy » RFC 2047).
- $message Message to be sent.
Each line should be separated with a CRLF (\r\n). Lines should not be larger than 70 characters. - $additional_headers (optional) String to be inserted at the end of the email header.
- This is typically used to add extra headers (From, Cc, and Bcc). Multiple extra headers should be separated with a CRLF (\r\n). If outside data are used to compose this header, the data should be sanitized so that no unwanted headers could be injected.
- When sending mail, the mail must contain a From header. This can be set with the additional_headers parameter, or a default can be set in php.ini.
- Failing to do this will result in an error message similar to Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing. The From header sets also Return-Path under Windows.
- This is typically used to add extra headers (From, Cc, and Bcc). Multiple extra headers should be separated with a CRLF (\r\n). If outside data are used to compose this header, the data should be sanitized so that no unwanted headers could be injected.
Note:
If messages are not received, try using a LF (\n) only. Some Unix mail transfer agents (most notably » qmail) replace LF by CRLF automatically (which leads to doubling CR if CRLF is used). This should be a last resort, as it does not comply with » RFC 2822.
additional_parameters (optional)
The $additional_parameters parameter can be used to pass additional flags as command line options to the program configured to be used when sending mail, as defined by the sendmail_path configuration setting. For example, this can be used to set the envelope sender address (-fxxx@yyy.zz).
The mail from has to be set twice to be absolute sure it will work correctly:
- In the $additional_header. Please note the specific formatting of this field.
- In the $additional_parameters. Please not the format: -ffrom@xxx.nl without as space between -f and the email address (i.e. -fharm@harmfrielink.nl).
See also
- ServerSMTP, SMTP Errors