<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>MacOS on widerin</title><link>http://widerin.net/tags/macos/</link><description>Recent content in MacOS on widerin</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 26 Jul 2020 12:30:34 +0200</lastBuildDate><atom:link href="http://widerin.net/tags/macos/index.xml" rel="self" type="application/rss+xml"/><item><title>Java versions on macOS</title><link>http://widerin.net/posts/2020/java-versions-on-macos/</link><pubDate>Fri, 21 Feb 2020 00:00:00 +0000</pubDate><guid>http://widerin.net/posts/2020/java-versions-on-macos/</guid><description>&lt;p&gt;On macOS you can use &lt;code&gt;/usr/libexec/java_home&lt;/code&gt; command to control your used Java
version. As a lot of applications and/or projects still require Java 1.8 or you
might want to use an alternative JDK/JRE let&amp;rsquo;s look into managing those
different versions.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ /usr/libexec/java_home -h
Usage: java_home [options...]
Returns the path to a Java home directory from the current user&amp;#39;s settings.
Options:
[-v/--version &amp;lt;version&amp;gt;] Filter Java versions in the &amp;#34;JVMVersion&amp;#34; form 1.X(+ or *).
[-a/--arch &amp;lt;architecture&amp;gt;] Filter JVMs matching architecture (i386, x86_64, etc).
[-d/--datamodel &amp;lt;datamodel&amp;gt;] Filter JVMs capable of -d32 or -d64
[-t/--task &amp;lt;task&amp;gt;] Use the JVM list for a specific task (Applets, WebStart, BundledApp, JNI, or CommandLine)
[-F/--failfast] Fail when filters return no JVMs, do not continue with default.
[ --exec &amp;lt;command&amp;gt; ...] Execute the $JAVA_HOME/bin/&amp;lt;command&amp;gt; with the remaining arguments.
[-R/--request] Request installation of a Java Runtime if not installed.
[-X/--xml] Print full JVM list and additional data as XML plist.
[-V/--verbose] Print full JVM list with architectures.
[-h/--help] This usage information.
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="manual-installation"&gt;Manual installation&lt;/h2&gt;
&lt;p&gt;For this post I&amp;rsquo;ve decided to use &lt;a href="https://adoptopenjdk.net/installation.html"&gt;AdoptOpenJDK&lt;/a&gt; as it&amp;rsquo;s actively maintained.&lt;/p&gt;</description></item><item><title>How to run Mikrotik's Winbox on macOS</title><link>http://widerin.net/posts/2018/how-to-run-mikrotiks-winbox-on-macos/</link><pubDate>Wed, 24 Jan 2018 00:00:00 +0000</pubDate><guid>http://widerin.net/posts/2018/how-to-run-mikrotiks-winbox-on-macos/</guid><description>&lt;p&gt;Some time ago &lt;a href="https://m0n0.ch/"&gt;m0n0wall&lt;/a&gt; burried their project and my
firewall went out of maintenance. Back in 2008
&lt;a href="https://m0n0.ch/"&gt;m0n0wall&lt;/a&gt; really had its great time but unfortunately the
recommended successor project &lt;a href="https://opnsense.org/"&gt;opnsense&lt;/a&gt; required more
hardware (cpu/memory) than my &lt;a href="https://pcengines.ch"&gt;alix&lt;/a&gt; routerboard alix2c3
was equipped with.&lt;/p&gt;
&lt;p&gt;I didn&amp;rsquo;t want to invest or assemble a new &lt;a href="https://pcengines.ch"&gt;alix&lt;/a&gt;
routerboard with encosure and antennas. So after doing some research
online I decided &lt;a href="https://mikrotik.com/"&gt;Mikrotik&lt;/a&gt; would be my next
internet entry point.
&lt;div class="gallery col2" itemscope itemtype="https://schema.org/ImageGallery"&gt;
&lt;figure itemprop="associatedMedia" itemscope itemtype="https://schema.org/ImageObject"&gt;
&lt;a class="glightbox" href="https://i.mt.lv/cdn/rb_images/1169_l.jpg" data-gallery="gallery-0" itemprop="contentUrl"&gt;
&lt;img loading="lazy" src="https://i.mt.lv/cdn/rb_images/1169_l.jpg" alt="" itemprop="thumbnail"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
So I got a &lt;a href="https://mikrotik.com/product/RB962UiGS-5HacT2HnT"&gt;hAP AC from Mikrotik&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Change umask in Docker containers</title><link>http://widerin.net/posts/2016/change-umask-in-docker-containers/</link><pubDate>Mon, 25 Jan 2016 00:00:00 +0000</pubDate><guid>http://widerin.net/posts/2016/change-umask-in-docker-containers/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;You&amp;rsquo;re mounting volumes into &lt;a href="https://www.docker.com"&gt;Docker&lt;/a&gt; containers and running into permission
issues while accessing volume from other &lt;a href="https://www.docker.com"&gt;Docker&lt;/a&gt; containers.&lt;/p&gt;
&lt;div class="callout callout-info"&gt;
&lt;p class="callout-title"&gt;Docker installation required&lt;/p&gt;
&lt;a href="https://docs.docker.com/engine/installation/"&gt;Docker&lt;/a&gt; must be installed on your system.
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; docker version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;Client: Docker Engine - Community
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Version: 19.03.5
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; API version: 1.40
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Go version: go1.12.12
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Git commit: 633a0ea
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Built: Wed Nov 13 07:22:34 2019
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; OS/Arch: darwin/amd64
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Experimental: false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;Server: Docker Engine - Community
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Engine:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Version: 19.03.5
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; API version: 1.40 (minimum version 1.12)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Go version: go1.12.12
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Git commit: 633a0ea
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Built: Wed Nov 13 07:29:19 2019
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; OS/Arch: linux/amd64
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Experimental: false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; containerd:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Version: v1.2.10
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; runc:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Version: 1.0.0-rc8+dev
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; docker-init:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Version: 0.18.0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; GitCommit: fec3683
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="umask"&gt;umask&lt;/h2&gt;
&lt;p&gt;umask is set to &lt;code&gt;0022&lt;/code&gt; on most linux sytems by default. This umask allows group
and others to &lt;strong&gt;read&lt;/strong&gt; but &lt;strong&gt;not write&lt;/strong&gt; your files, see below:&lt;/p&gt;</description></item><item><title>Private docker-registry within docker</title><link>http://widerin.net/posts/2016/private-docker-registry-within-docker/</link><pubDate>Thu, 07 Jan 2016 00:00:00 +0000</pubDate><guid>http://widerin.net/posts/2016/private-docker-registry-within-docker/</guid><description>&lt;p&gt;Sometimes you need your own &lt;a href="https://github.com/docker/distribution"&gt;docker-registry&lt;/a&gt; to just try out new things or to avoid downloading stuff again and again from the internet. I tried to build a &lt;a href="https://github.com/docker/compose/releases"&gt;docker-compose&lt;/a&gt; recipe to setup my own private registry.&lt;/p&gt;
&lt;div class="callout callout-info"&gt;
&lt;p class="callout-title"&gt;Docker installation required&lt;/p&gt;
&lt;a href="https://docs.docker.com/engine/installation/"&gt;Docker&lt;/a&gt; must be installed on your system.
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; docker version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;Client: Docker Engine - Community
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Version: 19.03.5
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; API version: 1.40
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Go version: go1.12.12
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Git commit: 633a0ea
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Built: Wed Nov 13 07:22:34 2019
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; OS/Arch: darwin/amd64
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Experimental: false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;Server: Docker Engine - Community
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Engine:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Version: 19.03.5
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; API version: 1.40 (minimum version 1.12)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Go version: go1.12.12
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Git commit: 633a0ea
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Built: Wed Nov 13 07:29:19 2019
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; OS/Arch: linux/amd64
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Experimental: false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; containerd:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Version: v1.2.10
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; runc:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Version: 1.0.0-rc8+dev
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; docker-init:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; Version: 0.18.0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; GitCommit: fec3683
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You&amp;rsquo;ll need a working directory where &lt;code&gt;docker-compose.yml&lt;/code&gt; file and certificates are stored in, so please create a folder &lt;code&gt;my-registry&lt;/code&gt; as shown below:&lt;/p&gt;</description></item><item><title>Plone test development with robotframework and RIDE</title><link>http://widerin.net/posts/2012/plone-test-development-with-robotframework-and-ride/</link><pubDate>Thu, 29 Nov 2012 00:00:00 +0000</pubDate><guid>http://widerin.net/posts/2012/plone-test-development-with-robotframework-and-ride/</guid><description>&lt;h2 id="running-acceptance-tests-in-plone"&gt;Running acceptance tests in Plone&lt;/h2&gt;
&lt;p&gt;Test driven development (TDD) can be a pain. If you are working with &lt;a href="http://zope.org"&gt;Zope&lt;/a&gt; and
&lt;a href="http://plone.org"&gt;Plone&lt;/a&gt; most of time gets consumed starting up &lt;a href="http://zope.org"&gt;Zope&lt;/a&gt; running &lt;code&gt;setUp&lt;/code&gt; method
and rolling back transaction in &lt;code&gt;tearDown&lt;/code&gt; method.&lt;/p&gt;
&lt;p&gt;So why not use a running already set-up instance for test-development?
Today I will show you how to reach that goal. It&amp;rsquo;s not as hard as it
seems.&lt;/p&gt;
&lt;h2 id="use-buildout"&gt;Use buildout&lt;/h2&gt;
&lt;p&gt;Of course we use &lt;code&gt;buildout&lt;/code&gt; to get a custom script which we can run
through &lt;a href="https://github.com/robotframework/RIDE"&gt;RIDE&lt;/a&gt;. I configured a
new pybot script, the basic idea has been implemented in
&lt;a href="https://github.com/plone/plone.act"&gt;plone.act&lt;/a&gt;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; module already.&lt;/p&gt;</description></item><item><title>Install Robot Framework RIDE through homebrew</title><link>http://widerin.net/posts/2012/install-robot-framework-ride-through-homebrew/</link><pubDate>Tue, 16 Oct 2012 00:00:00 +0000</pubDate><guid>http://widerin.net/posts/2012/install-robot-framework-ride-through-homebrew/</guid><description>&lt;p&gt;&lt;a href="https://www.python.org/"&gt;Python&lt;/a&gt;, &lt;a href="https://wxpython.org/"&gt;wxPython&lt;/a&gt; and &lt;a href="https://github.com/robotframework/RIDE"&gt;robotframework RIDE&lt;/a&gt; on your macOS.&lt;/p&gt;
&lt;div class="callout callout-default"&gt;
&lt;p class="callout-title"&gt;Update 2016, 23 Feb&lt;/p&gt;
Fixed &lt;code&gt;wxPython&lt;/code&gt; installation so it works with most recent versions available today.
&lt;/div&gt;
&lt;div class="callout callout-default"&gt;
&lt;p class="callout-title"&gt;Update 2017, 03 Jul&lt;/p&gt;
Seems this installation method no longer works on &amp;gt;= MacOS Sierra.
Please use a &lt;a href="https://hub.docker.com/r/ivonet/robotframework-ride/"&gt;docker image and Ride in browser&lt;/a&gt;.
&lt;/div&gt;
&lt;h2 id="wxpython"&gt;wxPython&lt;/h2&gt;
&lt;p&gt;Since &lt;a href="https://wxpython.org/"&gt;wxPython&lt;/a&gt; is available on &lt;a href="http://brew.sh"&gt;homebrew&lt;/a&gt; you don&amp;rsquo;t have to install the package provided on the &lt;a href="https://wxpython.org/"&gt;wxPython&lt;/a&gt; website.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ brew info wxpython
wxPython: stable 3.0.2.0 (bottled)
Python bindings for wxWidgets
https://www.wxwidgets.org/
/usr/local/Cellar/wxPython/3.0.2.0 (1,107 files, 38.2M)
Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/wxpython.rb
==&amp;gt; Dependencies
Required: wxmac ✔
==&amp;gt; Options
--universal
$ brew install wxpython
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This will take some time so be patient.&lt;/p&gt;</description></item><item><title>Secure your Dropbox</title><link>http://widerin.net/posts/2012/secure-your-dropbox/</link><pubDate>Wed, 10 Oct 2012 00:00:00 +0000</pubDate><guid>http://widerin.net/posts/2012/secure-your-dropbox/</guid><description>&lt;p&gt;Quick guide howto get an encFs encrypted &lt;a href="http://www.dropbox.com"&gt;Dropbox&lt;/a&gt; subfolder automounted
on login in macOS and indexed in Spotlight.&lt;/p&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;First of all, &lt;a href="http://www.dropbox.com"&gt;Dropbox&lt;/a&gt; is a really useful piece of software. Your data is
stored unencrypted inside an online storage and in this case it&amp;rsquo;s not suitable
for secret data. You can bypass this disadvantage by encrypting a folder inside
&lt;a href="http://www.dropbox.com"&gt;Dropbox&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="prerequisits"&gt;Prerequisits&lt;/h2&gt;
&lt;p&gt;The following instructions expect you using a macOS but may also inspire Unix
or Linux users.&lt;/p&gt;</description></item><item><title>Howto send mails from localhost through a smarthost on macOS</title><link>http://widerin.net/posts/2010/howto-send-mails-from-localhost-through-a-smarthost-on-macos/</link><pubDate>Wed, 07 Apr 2010 00:00:00 +0000</pubDate><guid>http://widerin.net/posts/2010/howto-send-mails-from-localhost-through-a-smarthost-on-macos/</guid><description>&lt;p&gt;You&amp;rsquo;re getting weird errors like &amp;ldquo;Connection refused&amp;rdquo; from your smtp library?
By reconfiguring your local mailer to send mails through a smarthost you can
solve this issue.&lt;/p&gt;
&lt;h2 id="setting-up-a-smarthost"&gt;Setting up a smarthost&lt;/h2&gt;
&lt;p&gt;Setting up your macOS to use a smarthost to forward mails to is not very
hard. I found a nice tutorial on &lt;a href="http://fuerstnet.de/en/sending-email-local-development-machine-using"&gt;fuerstnet.de&lt;/a&gt;
which was the base of this blog post.&lt;/p&gt;
&lt;p&gt;Copy the lines:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo postconf -e relayhost=your.isps.mailserver smtp_use_tls=yes smtp_sasl_auth_enable=yes smtp_sasl_password_maps=hash:/etc/postfix/smtp_auth tls_random_source=dev:/dev/urandom smtp_sasl_security_options=noanonymous
$ sudo sh -c 'echo &amp;quot;your.isps.mailserver username:password&amp;quot; &amp;gt;&amp;gt; /etc/postfix/smtp_auth'
$ sudo chown root:wheel /etc/postfix/smtp_auth
$ sudo chmod 600 /etc/postfix/smtp_auth
$ sudo postmap hash:/etc/postfix/smtp_auth
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="problems"&gt;Problems&lt;/h2&gt;
&lt;p&gt;I noticed postfix is quitting after &lt;code&gt;60&lt;/code&gt; seconds. So if you send
yourself a test email using: &lt;code&gt;echo &amp;quot;test&amp;quot; | mail -s &amp;quot;test&amp;quot; your@email&lt;/code&gt;
the postfix daemon will quit after &lt;code&gt;60&lt;/code&gt; seconds and you&amp;rsquo;ll get these
errors when trying to send mails through localhost in (for example)
&lt;a href="https://plone.org"&gt;Plone&lt;/a&gt;:&lt;/p&gt;</description></item></channel></rss>