<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mad9Scientist.com</title>
	<atom:link href="https://mad9scientist.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://mad9scientist.com/</link>
	<description>Computer Scientist, Coder, Experimenter</description>
	<lastBuildDate>Mon, 24 Jun 2024 23:16:30 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
<site xmlns="com-wordpress:feed-additions:1">101002379</site>	<item>
		<title>Get Git into Your Life</title>
		<link>https://mad9scientist.com/get-git-into-your-life/</link>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Sun, 16 Jun 2024 20:03:18 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://mad9scientist.com/?p=1043</guid>

					<description><![CDATA[<p>It amazes me how much different my git activity changes, when I reduce the risk of unauthorized data exposure to the greater Internet. Since setting up a reliable local Gitea Server on my private LAN I found that I tend to use Git more than ever. I have been diving into things that I have [&#8230;]</p>
<p>The post <a href="https://mad9scientist.com/get-git-into-your-life/">Get Git into Your Life</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>It amazes me how much different my git activity changes, when I reduce the risk of unauthorized data exposure to the greater Internet.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69e58c985df03&quot;}" data-wp-interactive="core/image" data-wp-key="69e58c985df03" class="wp-block-image size-full is-resized wp-lightbox-container"><img data-recalc-dims="1" data-dominant-color="22292e" data-has-transparency="false" fetchpriority="high" decoding="async" width="940" height="240" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" sizes="(max-width: 1000px) 100vw, 1000px" src="https://i0.wp.com/mad9scientist.com/m9s/wp-content/uploads/2024/06/Screenshot-2024-06-15-211927.png?resize=940%2C240&#038;ssl=1" alt="GitHub Activity for the last year (June 2023 - June 2024) with few commits throughout the period" class="wp-image-1045 not-transparent" style="--dominant-color: #22292e; width:838px;height:auto" srcset="https://i0.wp.com/mad9scientist.com/m9s/wp-content/uploads/2024/06/Screenshot-2024-06-15-211927.png?w=940&amp;ssl=1 940w, https://i0.wp.com/mad9scientist.com/m9s/wp-content/uploads/2024/06/Screenshot-2024-06-15-211927.png?resize=300%2C77&amp;ssl=1 300w, https://i0.wp.com/mad9scientist.com/m9s/wp-content/uploads/2024/06/Screenshot-2024-06-15-211927.png?resize=768%2C196&amp;ssl=1 768w" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Enlarge"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">My Public <a href="/git/">GitHub</a> Activity</figcaption></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69e58c985e4a8&quot;}" data-wp-interactive="core/image" data-wp-key="69e58c985e4a8" class="wp-block-image size-full wp-lightbox-container"><img data-recalc-dims="1" data-dominant-color="3b4149" data-has-transparency="false" style="--dominant-color: #3b4149;" decoding="async" width="986" height="187" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" sizes="(max-width: 1000px) 100vw, 1000px" src="https://i0.wp.com/mad9scientist.com/m9s/wp-content/uploads/2024/06/Screenshot-2024-06-15-211903.png?resize=986%2C187&#038;ssl=1" alt="Private Gitea Activity for the last year (June 2023 - June 2024) Showing daily activity since April 2024." class="wp-image-1044 not-transparent" srcset="https://i0.wp.com/mad9scientist.com/m9s/wp-content/uploads/2024/06/Screenshot-2024-06-15-211903.png?w=986&amp;ssl=1 986w, https://i0.wp.com/mad9scientist.com/m9s/wp-content/uploads/2024/06/Screenshot-2024-06-15-211903.png?resize=300%2C57&amp;ssl=1 300w, https://i0.wp.com/mad9scientist.com/m9s/wp-content/uploads/2024/06/Screenshot-2024-06-15-211903.png?resize=768%2C146&amp;ssl=1 768w" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Enlarge"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">My Private/Local <a href="https://about.gitea.com">Gitea</a> Activity</figcaption></figure>



<p>Since setting up a reliable local Gitea Server on my private LAN I found that I tend to use Git more than ever. I have been diving into things that I have been more cautious about, because of the risk of leaking secrets and confidential data. Even my activity on GitHub has increased because I can test a project internally before sharing it on GitHub. </p>



<p>I have started playing with Continuous Deployment, Ansible, Hugo and more. I can &#8216;safely&#8217; work locally, without accidentally exposing private information to the greater internet. (If you are interested in my Home Lab Content, checkout my <a href="https://homelab.mad9scientist.com/">mini site</a> for more.)</p>



<p>I also switched to my new computer about the same time my activity increased &#8211; April 2024 &#8211; may be related <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f937.png" alt="🤷" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</p>



<p><strong>Aside: Time Gap</strong> &#8211; If you are curious about the gap between August 2023 to April 2024, shortly after I setup my first Gitea instance on my testing hypervisor (Proxmox VE) the host system started throwing disk errors. So, I stopped using that host. This was my first bare-metal hypervisor, I turned it off and forgot about it. Early 2024 I started playing with XCP-ng on a new host, I deployed a new instance on XCP-ng system. Then when I switched computers and setup a good upgrade/backup scripts for Gitea I started using Gitea more often.</p>



<p>Another interesting thing, I have more <abbr title="Repositories">repos</abbr> on Gitea (23 Repos, 5 Orgs) than GitHub (8 Repos, 1 Org).</p>



<p>So if you want to learn Git or start using it for more things, I recommend hosting a local Git Server. </p>



<p>Have thoughts, share them in the comments or yell at me on <a href="https://twitter.com/mad9scientist">Twitter @Mad9Scientist</a>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><strong>Popular Git Servers</strong></p>



<ul class="wp-block-list">
<li>Linux Distro (Your Choice) + Git (<a href="https://www.digitalocean.com/community/tutorials/how-to-set-up-a-private-git-server-on-a-vps">Digital Ocean Tutorial</a>)</li>



<li><a href="https://about.gitea.com/">Gitea</a> &#8211; Light and Fast, written in Go</li>



<li><a href="https://about.gitlab.com/">Gitlab</a> &#8211; Know of it, Limited Experience (need 4GB Memory)</li>



<li><a href="https://gogs.io/">Gogs</a> &#8211; Know of it, Limited Experience</li>
</ul>
<p>The post <a href="https://mad9scientist.com/get-git-into-your-life/">Get Git into Your Life</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1043</post-id>	</item>
		<item>
		<title>WordPress&#8230; Ah!</title>
		<link>https://mad9scientist.com/wordpress-ah/</link>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Mon, 03 Jun 2024 04:21:47 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://mad9scientist.com/?p=1037</guid>

					<description><![CDATA[<p>I have been using WordPress for years at this point. I deployed my first production WordPress site way back in 2010 (nearly 14 years ago), and yes that site is still alive and running &#8211; it&#8217;s my company&#8217;s website. Lately I have been playing with a static site generators, Hugo, because I can keep the [&#8230;]</p>
<p>The post <a href="https://mad9scientist.com/wordpress-ah/">WordPress&#8230; Ah!</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>I have been using WordPress for years at this point. I deployed my first production WordPress site way back in 2010 (nearly 14 years ago), and yes that site is still alive and running &#8211; it&#8217;s my company&#8217;s website. </p>



<p>Lately I have been playing with a static site generators, <a href="https://gohugo.io">Hugo</a>, because I can keep the entire site under version control (git) and it loads faster. I&#8217;ve been using Hugo over on my <a href="https://homelab.mad9scientist.com">Home Lab</a> mini site. (Imagine that, a site is much faster when it doesn&#8217;t need a database and server side processing before sending it to the client /s). I have been trying to document and blog more things lately, but I find myself fighting with WordPress more and more. The Block Editor is neat and has added interesting features to the WordPress &#8216;platform&#8217;. But I find myself even fighting with the &#8216;blocks&#8217; in the Block Editor. Either the blocks do not have the features one would expect or the settings for the blocks are not intuitive.</p>



<p>Recently while trying to make a page on my company site, I ran into an issue. I wanted to dump some custom HTML into a page for a custom art direction for the page. However, I started to fight with WP injecting random P Tags in my HTML. I&#8217;ve known of this feature for years, but I have been able to over come the issue in the past. But this time around no matter how much I tried I couldn&#8217;t get the classic editor to render the code correctly. I obviously know I can disable the Auto P feature, but it disables it site wide, which breaks the content on other pages of the site. This is a problem, I either have to go update multiple pages and posts or develop a new work around for the issue. </p>



<p>This is under the light of a site redesign that will &#8220;happen soon<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" />&#8221;, so I don&#8217;t really want to do a lot of work, when I have to do a lot of work for the redesign.</p>



<p>WordPress is a great platform and easy to use, but every year I get closer to nuking my own WordPress Based Sites in favor of plain HTML sites. But the convenience of the back of house (WP Admin) is so nice. Along with the double edge of the WordPress Plugin Repository &#8211; even though I try not to use that many plugins. I have been thinking about dropping WordPress for a few years (since the &#8216;before times&#8217;), but the laziness and convenience of WordPress flow is so nice.</p>



<p>I have not decided that I&#8217;m going to move away from WordPress at this time.</p>



<p>There is a possibility that I may change <em>this </em>(my personal) site over to a static site, mostly because this site doesn&#8217;t need the dynamic features of WordPress or really any CMS. I will most likely re-visit this in the future&#8230;</p>



<p>If you have thoughts, share them with me in the comments or on <a href="https://links.mad9scientist.com/twitter-not-x">Twitter</a>.</p>
<p>The post <a href="https://mad9scientist.com/wordpress-ah/">WordPress&#8230; Ah!</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1037</post-id>	</item>
		<item>
		<title>Manifesto for a Humane Web</title>
		<link>https://humanewebmanifesto.com/</link>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Tue, 28 May 2024 02:31:15 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://mad9scientist.com/?p=1027</guid>

					<description><![CDATA[<p>We need to stop and undo the &#8216;Enshittification&#8216; of the web, and this is a good start on that path&#8230; Mirror</p>
<p>The post <a href="https://humanewebmanifesto.com/">Manifesto for a Humane Web</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>We need to stop and undo the &#8216;<a href="https://en.wikipedia.org/wiki/Enshittification">Enshittification</a>&#8216; of the web, and this is a good start on that path&#8230;</p>



<p><a href="https://mad9scientist.com/archived/web/humane-web-manifesto-com.html" rel="nofollow">Mirror</a></p>
<p>The post <a href="https://humanewebmanifesto.com/">Manifesto for a Humane Web</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1027</post-id>	</item>
		<item>
		<title>Homelab Mini Site</title>
		<link>https://homelab.mad9scientist.com</link>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Tue, 26 Mar 2024 00:18:20 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://mad9scientist.com/?p=1000</guid>

					<description><![CDATA[<p>I just setup a mini site for my adventures in my homelab. I will share the projects I&#8217;m working on and my experiences with the other stuff I&#8217;m actively learning. I also posted a new page of the new tech I&#8217;m trying to learn.</p>
<p>The post <a href="https://homelab.mad9scientist.com">Homelab Mini Site</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>I just setup a mini site for my adventures in my homelab. I will share the projects I&#8217;m working on and my experiences with the other stuff I&#8217;m actively learning. </p>



<p>I also posted a new page of the new tech <a href="https://mad9scientist.com/about/learning/">I&#8217;m trying to learn</a>.</p>
<p>The post <a href="https://homelab.mad9scientist.com">Homelab Mini Site</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1000</post-id>	</item>
		<item>
		<title>Learning to say No.</title>
		<link>https://thoughtcatalog.com/ryan-holiday/2017/01/to-everyone-who-asks-for-just-a-little-of-your-time/</link>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Wed, 22 Apr 2020 17:50:00 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://mad9scientist.com/?p=796</guid>

					<description><![CDATA[<p>Saying yes to things is the easy and natural path. Do you want some Ice Cream? You want a free widget? Learning to say no, is a necessary skill. Something I still have a problem with today. But I recently rediscovered two excellent articles &#8211; Ryan Holiday&#8217;s To Everyone Who Asks For ‘Just A Little’ [&#8230;]</p>
<p>The post <a href="https://thoughtcatalog.com/ryan-holiday/2017/01/to-everyone-who-asks-for-just-a-little-of-your-time/">Learning to say No.</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Saying yes to things is the easy and natural path.</p>
<blockquote><p><em></em></p>
<p><em>Do you want some Ice Cream?</em></p>
<p><em>You want a free widget?</p>
<p></em><em></em><em></em></p></blockquote>
<p>Learning to say no, is a necessary skill. Something <em>I</em> still have a problem with today.</p>
<p>But I recently rediscovered two excellent articles &#8211; Ryan Holiday&#8217;s <a href="https://thoughtcatalog.com/ryan-holiday/2017/01/to-everyone-who-asks-for-just-a-little-of-your-time/"><em>To Everyone Who Asks For ‘Just A Little’ Of Your Time: Here’s What It Costs To Say Yes</em></a> and Paul Graham&#8217;s <a href="http://paulgraham.com/makersschedule.html"><em>Maker&#8217;s Schedule, Manager&#8217;s Schedule</em></a>.</p>
<p>I have read these in the past, but with time things tend to fade from memory and old habits return.</p>
<p>I&#8217;m sharing these for my future self to re-read every few months.</p>
<p>The post <a href="https://thoughtcatalog.com/ryan-holiday/2017/01/to-everyone-who-asks-for-just-a-little-of-your-time/">Learning to say No.</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">796</post-id>	</item>
		<item>
		<title>UTC is enough for everyone &#8230;right?</title>
		<link>https://zachholman.com/talk/utc-is-enough-for-everyone-right</link>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Thu, 21 Jun 2018 21:55:40 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">http://mad9scientist.com/?p=678</guid>

					<description><![CDATA[<p>A very good article about how difficult it is to work with Time and Dates in programming. Zach Holman&#8217;s time puns make this a very enjoyable read, on a very complex topic with a ton of great information.</p>
<p>The post <a href="https://zachholman.com/talk/utc-is-enough-for-everyone-right">UTC is enough for everyone &#8230;right?</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A very good article about how difficult it is to work with Time and Dates in programming. Zach Holman&#8217;s time puns make this a very enjoyable read, on a very complex topic with a ton of great information.</p>
<p>The post <a href="https://zachholman.com/talk/utc-is-enough-for-everyone-right">UTC is enough for everyone &#8230;right?</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">678</post-id>	</item>
		<item>
		<title>Setup Postfix to Relay Mail for Specific Domains or Users</title>
		<link>https://mad9scientist.com/postfix-relay-mail-specific-domains/</link>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Mon, 30 May 2016 15:46:00 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">http://mad9scientist.com/?p=593</guid>

					<description><![CDATA[<p>I have been working with my mail server a lot lately and I ran into some problems of getting mail delivered to Outlook.com Mail Accounts (Hotmail.com, Outlook.com, Live.com, etc) but I will discuss that more in another article (In Short two months later and still can&#8217;t). I have an user that subscribes to MailRoute.net&#8217;s excellent [&#8230;]</p>
<p>The post <a href="https://mad9scientist.com/postfix-relay-mail-specific-domains/">Setup Postfix to Relay Mail for Specific Domains or Users</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/mad9scientist.com/m9s/wp-content/uploads/2016/05/mail-icon-150x150.png?resize=150%2C150" alt="Mail Relaying" width="150" height="150" class="alignright size-thumbnail wp-image-600" style="width: 150px; height: 150px; margin-bottom: 1.5em;" srcset="https://i0.wp.com/mad9scientist.com/m9s/wp-content/uploads/2016/05/mail-icon.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/mad9scientist.com/m9s/wp-content/uploads/2016/05/mail-icon.png?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/mad9scientist.com/m9s/wp-content/uploads/2016/05/mail-icon.png?resize=768%2C768&amp;ssl=1 768w, https://i0.wp.com/mad9scientist.com/m9s/wp-content/uploads/2016/05/mail-icon.png?resize=1024%2C1024&amp;ssl=1 1024w, https://i0.wp.com/mad9scientist.com/m9s/wp-content/uploads/2016/05/mail-icon.png?w=1280&amp;ssl=1 1280w" sizes="(max-width: 150px) 100vw, 150px" /><br />
I have been working with my mail server a lot lately and I ran into some problems of getting mail delivered to Outlook.com Mail Accounts (Hotmail.com, Outlook.com, Live.com, etc) but I will discuss that more in another article (In Short two months later and still can&#8217;t). I have an user that subscribes to MailRoute.net&#8217;s excellent spam filtering service, and they use it with my mail server for inbound filtering. However, because Outlook.com will refuse to deliver messages from my mail server, we decided to use MailRoute&#8217;s outbound filtering &#8211; not really for the outgoing filter, but for the better deliverability to the Outlook.com Mail Accounts.</p>
<p>So I needed to setup my mail server to relay mail for one domain to another server that is outside of my control and network. My mail server uses <em>Postfix 2.10</em> for the Mail Transfer Agent (MTA). So this is how you can configure Postfix forward (relay) all mail for one virtual domain to another mail server (smart host) before being sent to its final destination.</p>
<h2>Setup Mail Relay on Your Mail Server</h2>
<p>You will need to do all of this as root, so either sudo or elevate to a root shell.</p>
<ol>
<li>Create a file that will contain the domains that will be processed by another server. I used <code>/etc/postfix/bysender</code>.</li>
<li>Open the file <code>bysender</code>, add the following information:
<pre class="language-clike">
<code>@example.com   [outbound.thirdparty.server.com]
</code></pre>
<ul>
<li>On the left <code>@example.com</code> is the domain that you want to have its messages forwarded (relayed) to the outside server</li>
<li>The right <code>[outbound.thirdparty.server.com]</code> is the server that you want to relay messages to, and yes you need the brackets</li>
<li>By the way: You could have one particular user&#8217;s messages relayed to a different outside mail server by just putting in the entire e-mail address on the left side</li>
</ul>
</li>
<li>Save and Close the <code>bysender</code> file.</li>
<li>Now we need to hash/map the <code>bysender</code> file so that Postfix can use it. Run the following command:
<pre class="language-clike"><code>postmap /etc/postfix/bysender</code></pre>
</li>
<li>Now open your Postfix <code>main.cf</code> and insert the following:
<pre class="language-clike">
<code>sender_dependent_relayhost_maps = hash:/etc/postfix/bysender
</code></pre>
<ul>
<li>Update the file path if needed</li>
</ul>
</li>
<li>Now you need to restart Postfix, run the following command:
<pre class="language-clike"><code>service postfix restart </code></pre>
<ul>
<li>This assumes Ubuntu&#8217;s Service Command</li>
</ul>
</li>
</ol>
<p>Go ahead and test the configuration by sending a test message from the domain and review the headers at the receiving mail account, you should see the mail being sent to your smart host, or in my case MailRoute, before arriving to the servers for the outside mail account.</p>
<h3>Side Notes</h3>
<p>I found this information via Zimbra Support documentation, I attempted to find this in the official Postfix documentation, but the docs for Postfix are very hard to understand, requires you to have read them all and assumes that you already know most everything about mail and message movement within a system.</p>
<p>Also, I found several articles suggesting to use a <code>transport</code> file with a very similar layout as the <code>bysender</code> file here, but that just caused the mail server and MailRoute to play hot potato with the message (tossing it back and forth). From what I figured is the transport file is used to override DNS entries to direct mail for a particular domain to another server that may not exist in DNS records or is behind a firewall.</p>
<p><em>I hope that this was informative and helpful to your needs.</em></p>
<hr />
<h4>Resources</h4>
<ul>
<li><a href="https://wiki.zimbra.com/wiki/Relay_per_Domain">Zimbra Support: Relay per Domain</a></li>
<li><a href="http://www.postfix.org/postconf.5.html#sender_dependent_relayhost_maps">Postfix Documentation, PostConf: sender_dependent_relayhost_maps</a></li>
<li><a href="https://www.linode.com/docs/email/postfix/postfix-smtp-debian7">Linode &#8211; Configure Postfix to Send Mail Using an External SMTP Server</a></li>
</ul>
<p>The post <a href="https://mad9scientist.com/postfix-relay-mail-specific-domains/">Setup Postfix to Relay Mail for Specific Domains or Users</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">593</post-id>	</item>
		<item>
		<title>How to use a paper towel</title>
		<link>http://www.ted.com/talks/joe_smith_how_to_use_a_paper_towel</link>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Thu, 21 Apr 2016 18:44:54 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">http://mad9scientist.com/?p=587</guid>

					<description><![CDATA[<p>I remember seeing this video many years ago, and since then I only use one paper towel to dry my hands. Take five minutes to learn how to use a paper towel.</p>
<p>The post <a href="http://www.ted.com/talks/joe_smith_how_to_use_a_paper_towel">How to use a paper towel</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I remember seeing this video many years ago, and since then I only use one paper towel to dry my hands. Take five minutes to learn how to use a paper towel.</p>
<p>The post <a href="http://www.ted.com/talks/joe_smith_how_to_use_a_paper_towel">How to use a paper towel</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">587</post-id>	</item>
		<item>
		<title>TED Interview with Linus Torvalds</title>
		<link>https://www.ted.com/talks/linus_torvalds_the_mind_behind_linux</link>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Mon, 18 Apr 2016 19:15:27 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">http://mad9scientist.com/?p=584</guid>

					<description><![CDATA[<p>An excellent little interview with Linus Torvalds at TED. Get to know the man behind Linux and how Linux came to be.</p>
<p>The post <a href="https://www.ted.com/talks/linus_torvalds_the_mind_behind_linux">TED Interview with Linus Torvalds</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>An excellent little interview with Linus Torvalds at TED. Get to know the man behind Linux and how Linux came to be.</p>
<p>The post <a href="https://www.ted.com/talks/linus_torvalds_the_mind_behind_linux">TED Interview with Linus Torvalds</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">584</post-id>	</item>
		<item>
		<title>Dovecot Password Creation from PHP</title>
		<link>https://mad9scientist.com/dovecot-password-creation-php/</link>
		
		<dc:creator><![CDATA[Chris]]></dc:creator>
		<pubDate>Mon, 28 Mar 2016 18:36:39 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">http://mad9scientist.com/?p=559</guid>

					<description><![CDATA[<p>I&#8217;m currently working on making a Laravel based management system for my new mail service that I have setup using the Christoph Haas&#8217; ISPmail Tutorial, Ars Technica&#8217; Email Server Tutorial and others. I needed to be able to create Dovecot compatible passwords from my PHP application. So when it came to the day-to-day management of [&#8230;]</p>
<p>The post <a href="https://mad9scientist.com/dovecot-password-creation-php/">Dovecot Password Creation from PHP</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I&#8217;m currently working on making a Laravel based management system for my new mail service that I have setup using the Christoph Haas&#8217; <a href="https://workaround.org/ispmail/jessie">ISPmail Tutorial</a>, <a href="http://* http://arstechnica.com/information-technology/2014/02/how-to-run-your-own-e-mail-server-with-your-own-domain-part-1/">Ars Technica&#8217; Email Server Tutorial</a> and others. I needed to be able to create Dovecot compatible passwords from my PHP application.</p>
<p>So when it came to the day-to-day management of the system I didn&#8217;t want to run SQL commands to manage the user accounts, so I started building a web based management console. When it came to creating the user&#8217;s password I ran into a small problem, I couldn&#8217;t use the <code>doveadm pw</code> command because the dovecot software is installed on the mail server and while the management console will be installed on my web server &#8211; two different machines. I didn&#8217;t want to install Dovecot on my web server &#8211; for reasons, so I had to find a different way of creating the user&#8217;s password. So I looked at my options to create the password in PHP, after after many hours of researching it. I found the solution &#8211; which when I found it made me feel like an idiot.</p>
<p>So to help anyone else that may be looking for a way to create dovecot passwords using a more secure password than MD5, via PHP. Below are the different methods of creating a Dovecot supported password in PHP.</p>
<h2>Dovecot PHP Snippets</h2>
<p><strong>SHA512-CRYPT</strong></p>
<pre><code class="language-clike">$password = "PlainTextPassword";
$salt = substr(sha1(rand()), 0, 16);
$hashedPassword = "{SHA512-CRYPT}" . crypt($password, "$6$$salt");
</code></pre>
<p><strong>SHA512 Base64 Encoded</strong></p>
<pre><code class="language-clike">$password = "PlainTextPassword";
$salt = substr(sha1(rand()), 0, 16);
$hashedPassword = "{SHA512.b64}" . base64_encode(hash('sha512', $password, true));
</code></pre>
<p><strong>SHA256-CRYPT*</strong></p>
<pre><code class="language-clike">$password = "PlainTextPassword";
$salt = substr(sha1(rand()), 0, 16);
$hashedPassword = "{SHA256-CRYPT}" . crypt($password, "$5$$salt");
</code></pre>
<p><strong>SHA256 Base64 Encoded*</strong></p>
<pre><code class="language-clike">$password = "PlainTextPassword";
$salt = substr(sha1(rand()), 0, 16);
$hashedPassword = "{SHA256.b64}" . base64_encode(hash('sha256', $password, true));
</code></pre>
<p><strong>SSHA512-CRYPT (Salted)</strong></p>
<pre><code class="language-clike">$password = "PlainTextPassword";
$salt = substr(sha1(rand()), 0, 16);
$hashedPassword = "{SSHA512}" . base64_encode(hash('sha512', $password . $salt, true) . $salt);
</code></pre>
<p><strong>SSHA256-CRYPT (Salted)</strong></p>
<pre><code class="language-clike">$password = "PlainTextPassword";
$salt = substr(sha1(rand()), 0, 16);
$hashedPassword = "{SSHA256}" . base64_encode(hash('sha256', $password . $salt, true) . $salt);
</code></pre>
<p><em>* Denote code that should work, but has not been directly tested. All testing involved PHP 7.</em></p>
<p>Be sure to change the salting to something either with more entropy or another function of your desire.</p>
<p>Be sure to test the outputted hash against your install of Dovecot by running the following command.</p>
<pre><code>doveadm pw -t 'HASHED Password From Function' -p $password </code></pre>
<p>So, to test the outputted hash for the password &#8220;password123&#8221;, and assuming the function output was:</p>
<pre><code>{SHA512-CRYPT}$6$24fd51974df4aa22$JiLGcBXH7JLQcRbcAyFV52r4OOVv4PbmX88E7IB22T/lJsg3/oTI.rAGcWizqV8iyYgDQ4fE9oezojT/hBfdF/ </code></pre>
<p>You would run the following command in your terminal:</p>
<pre><code>doveadm pw -t '{SHA512-CRYPT}$6$24fd51974df4aa22$JiLGcBXH7JLQcRbcAyFV52r4OOVv4PbmX88E7IB22T/lJsg3/oTI.rAGcWizqV8iyYgDQ4fE9oezojT/hBfdF/' -p password123 </code></pre>
<p>Aside: I would use the blowfish encryption scheme, but my server does not support it, so I used the next best thing. Also, I know there are many virtual mail management systems out there (<a href="http://www.vimbadmin.net/">ViMbAdmin</a>), but I&#8217;m planning to built certain functionality of this management portal into other services I will offer to clients. I will also open source my management console, after I have clean up the code.</p>
<p>The post <a href="https://mad9scientist.com/dovecot-password-creation-php/">Dovecot Password Creation from PHP</a> originally appeared on <a href="https://mad9scientist.com">Mad9Scientist.com</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">559</post-id>	</item>
	</channel>
</rss>
