MAMP Pro

From HaFrWiki
Jump to: navigation, search

Manage ownership[edit]

MAMP has the user _www as default user to run the MAMP-server. When you try to run a Terminal application that uses files from the Server owned directory you need to do a sudo: <syntaxhighlight lang="bash"> $ sudu ./<My-Appl-Cli> --about Password: </syntaxhighlight> Give your OSX password and that will do the trick. Another way is to do is to use su, but that's even more annoying.

The best way is to change the group of the directory in the admin user (I think every Apple owner is also the admin of his device). <syntaxhighlight lang="bash"> $ ls -Al /Applications/MAMP/www/Log -rw-rw-r--@ 1 _www _www 457 Oct 1 13:32 .htaccess -rw-rw-r-- 1 _www _www 103138 Jun 26 2016 Log4Anno.log -rwxrwxr-x 1 _www _www 11558605 Nov 15 19:04 Log4DbTrace.log -rw-rw-r-- 1 _www _www 4249529 Nov 21 16:25 Log4Energy.log ... -rw-rw-r-- 1 _www admin 28624 Nov 22 09:03 Log4Whois.log

  1. Change the ownership of the group

$ cd /Applications/MAMP/www/Log $ sudo chown :admin Log4DbTrace.log Password: $ ls -Al Log4DbTrace.log -rwxrwxr-x 1 _www admin 11M Nov 15 19:04 Log4DbTrace.log </syntaxhighlight>

Mail[edit]

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).

Mysql[edit]

When you receive the following warning on mysql on OSX: <syntaxhighlight lang="bash" line start="1">

PHP Warning:  mysqli_connect(): (HY000/2002): No such file or directory in /Data/.../Database.php on line 258

[26-Oct-2018 08:58:13 Europe/Berlin] PHP Stack trace: [26-Oct-2018 08:58:13 Europe/Berlin] PHP 1. {main}() /Applications/MAMP/www/.../DbTrace-be.php:0 [26-Oct-2018 08:58:13 Europe/Berlin] ... [26-Oct-2018 08:58:13 Europe/Berlin] PHP 8. mysqli_connect(*uninitialized*, *uninitialized*, *uninitialized*) /Data/.../Database.php:258 </syntaxhighlight>

Solution[edit]

For some reason mysql on OS X gets the locations of the required socket file a bit wrong, but thankfully the solution is as simple as setting up a symbolic link.
You may have a socket (appearing as a zero length file) as /tmp/mysql.sock or /var/mysql/mysql.sock, but one or more apps is looking in the other location for it.
Find out with this command: <syntaxhighlight lang="bash" line start="1"> $ ls -l /tmp/mysql.sock /var/mysql/mysql.sock </syntaxhighlight> Rather than move the socket, edit config files, and have to remember to keep edited files local and away from servers where the paths are correct, simply create a symbolic link so your Mac finds the required socket, even when it's looking in the wrong place! [1]
'Comment: Exactly what I had with earlier MAMP installations, but since you are doing this once, you don't remember it. If you have /tmp/mysql.sock but no /var/mysql/mysql.sock then.. <syntaxhighlight lang="bash" line start="1"> $ cd /var $ sudo mkdir mysql $ sudo chmod 755 mysql $ cd mysql $ sudo ln -s /tmp/mysql.sock mysql.sock </syntaxhighlight>

If you have /var/mysql/mysql.sock but no /tmp/mysql.sock then... <syntaxhighlight lang="bash" line start="1"> $ cd /tmp $ ln -s /var/mysql/mysql.sock mysql.sock </syntaxhighlight> You will need permissions to create the directory and link, so just prefix the commands above with sudo if necessary [1].
Comment: If you have already symbolic links use the resulting file iso creating a symbolic link to a symbolic link.

StartTLS[edit]

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[edit]

<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[edit]

<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.

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).

Example MAMP Configuration[edit]

MAMP Postfix for One

Since the gmail configuarion gives bounced error due to authorization conflicts. I have used my own service provider One.com.

Set domain of outgoing emails[edit]

Use the basic name of the service provider (i.e. one.com) or for gmail (i.e. gmail.com).

Use a Smart host for Routing[edit]

Use the full name of the smtp service (i.e. send.one.com). In case of gmail (i.e. smtp.gmail.com).

Authentication[edit]

For one (i.e. Unencrypted).

User Name[edit]

The user name for the service provide (i.e. harm@harmfrielink.nl).

Password[edit]

The password. (i.e. ???).

See also[edit]

top

Reference[edit]

top

  1. 1.0 1.1 [1], Stack-Overflow, Warning mysql connect 2002.