<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Jane Doe on The Gnu Pit</title><link>https://gnupit.net/authors/jane-doe/</link><description>Recent content in Jane Doe on The Gnu Pit</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sun, 15 Feb 2026 19:26:42 -0600</lastBuildDate><atom:link href="https://gnupit.net/authors/jane-doe/index.xml" rel="self" type="application/rss+xml"/><item><title>Linux Mint Freezing</title><link>https://gnupit.net/posts/linux_mint_freezing/</link><pubDate>Sun, 15 Feb 2026 19:26:42 -0600</pubDate><guid>https://gnupit.net/posts/linux_mint_freezing/</guid><description>&lt;p&gt;I recently installed &lt;a href="https://www.linuxmint.com"&gt;Linux Mint 22.3 Zena&lt;/a&gt; on a brand new ASUS ROG Strix G815LP laptop. The installation went smoothly, or so I thought. Booted up after the install and everything was working, even bluetooth connecting to my Airpods Pro 3 after changing to &lt;code&gt;ControllerMode = bredr&lt;/code&gt;in &lt;code&gt;/etc/bluetooth/main.conf&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;About an hour into customizing the settings and adding some software, the system freezes. The keyboard, usb wireless mouse and touchpad were unresponsive. The only thing to do was a hard reset. I checked all the logs and reports. Nothing.&lt;/p&gt;</description></item><item><title>Deleting files from Dropdox</title><link>https://gnupit.net/posts/dropbox_delete/</link><pubDate>Mon, 18 Aug 2025 14:25:17 -0500</pubDate><guid>https://gnupit.net/posts/dropbox_delete/</guid><description>&lt;p&gt;Dropbox, if you pay for it, will keep deleted files for 30 days. Since a lot of my clients use Dropbox, I do, too. It just makes life easier when dealing with the clients. I use it to keep files synced between Linux Mint and Windows on my dual-boot laptop. I&amp;rsquo;ve never had to recover a deleted file before.&lt;/p&gt;
&lt;p&gt;I recently did a reorganization of my Dropbox folders when I was using Linux Mint. I moved some folders around, renamed a few, and deleted about 16,000 old files. When I next booted to Windows, for some reason, Dropbox decided that, rather than deleting/rearranging the files to reflect what my Linux Mint Dropbox had, it wanted to merge everything from Windows and Linux Mint. All of the deleted files were now back and some of the folders were duplicated in two different places. For example, I had a MyMusic folder with all my music in it. I renamed it Music and now Dropbox has put both Music and MyMusic on my Windows drive.&lt;/p&gt;</description></item><item><title>Dynamic DNS script to update Linode.com domain records</title><link>https://gnupit.net/posts/dyndns/</link><pubDate>Sat, 16 Aug 2025 10:44:37 -0500</pubDate><guid>https://gnupit.net/posts/dyndns/</guid><description>&lt;p&gt;My Macbook pro died and I decided a get a shiny new Windows laptop that I could convert to a Linux laptop. I partitioned the disk and created a dual boot with Linux Mint and Windows. Linux Mint installled like a champ and has been running happily ever since. I don&amp;rsquo;t think I have booted to Windows but twice in the last year.&lt;/p&gt;
&lt;p&gt;Moving to a new OS did mean that I needed to rewrite some of the scripts I use on a regular basis. One of the scripts updates DNS records at &lt;a href="https://www.linode.com"&gt;Linode&lt;/a&gt; with my current IPv4 and IPv6 WAN addresses and is run as a cron job. It&amp;rsquo;s a bash script I first wrote about &lt;a href="https://gnupit.net/posts/dyndns_linode/"&gt;in this entry&lt;/a&gt;. The updated script can be found in this &lt;a href="https://gist.github.com/troubleshooter/f47e999ea469820b8d12dec0ea280c1c"&gt;gist&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>RIP LinuxChix</title><link>https://gnupit.net/posts/rip_linuxchix/</link><pubDate>Wed, 13 Aug 2025 19:12:15 -0500</pubDate><guid>https://gnupit.net/posts/rip_linuxchix/</guid><description>&lt;p&gt;It&amp;rsquo;s a sad, sad day. An online institution, LinuxChix, has shuttered its mailing lists and websites. In its heyday, LinuxChix had over 2500 mailing list members on a variety of mailing lists, from programming to newchix for newbies to linux, I asked a lot of questions on their lists and always got great, considered and considerate answers. Small wonder since the rules for membership were simple - be helpful, be polite. It was a safe space to display my ignorance. I will forever be grateful for it.&lt;/p&gt;</description></item><item><title>Upgrading to Debian 13 Trixie</title><link>https://gnupit.net/posts/upgrading_to_debian13/</link><pubDate>Tue, 12 Aug 2025 07:12:15 -0500</pubDate><guid>https://gnupit.net/posts/upgrading_to_debian13/</guid><description>&lt;p&gt;Ah, the trials and tribulations of upgrading Debian 12 Bookworm to Debian 13 Trixie! I learned a valuable lesson this weekend with the update - always read the apt listchanges email. Always.&lt;/p&gt;
&lt;p&gt;The upgrade itself went smoothly with no errors during the packages upgrading/installing. I run three main services on my server - nginx, exim, and dovecot. On reboot, all three had issues with the upgraded packages.&lt;/p&gt;
&lt;h3 id="nginx"&gt;nginx&lt;/h3&gt;
&lt;p&gt;I received the following error in my nginx error.log:&lt;/p&gt;</description></item><item><title>Hugo .Site.Params.Author</title><link>https://gnupit.net/posts/updating_hugo_theme/</link><pubDate>Sun, 10 Aug 2025 07:12:15 -0500</pubDate><guid>https://gnupit.net/posts/updating_hugo_theme/</guid><description>&lt;p&gt;I dusted off the site and was going to write about my experience updating Debian 12 Bookworm to Debian 13 Trixie on two servers. I use &lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt; with the &lt;a href="https://github.com/Vimux/Mainroad"&gt;Mainroad&lt;/a&gt; theme and I hadn&amp;rsquo;t updated the site in quite a while. I updated Hugo to the latest stable version and tried to rebuild the site to include the new content. I ran into an error.&lt;/p&gt;
&lt;p&gt;The error was:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Site.Author was deprecated in Hugo v0.124.0 and subsequently removed.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Implement taxonomy &amp;#39;author&amp;#39; or use .Site.Params.Author instead.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I grepped the files in the theme and found .Site.Author in two files - author.html and authorbox.html. I replaced all the instances of &amp;ldquo;.Site.Author&amp;rdquo; with &amp;ldquo;.Site.Params.Author&amp;rdquo;. I also changed the &amp;ldquo;Site.Params.Author.avatar&amp;rdquo; to &amp;ldquo;Site.Params.Author.image&amp;rdquo;. Authorbox was now activated but nothing was displaying. So I looked at a couple of other newer themes to see what parameter names in config.toml needed to be changed. The &amp;ldquo;[Author]&amp;rdquo; section I renamed to [Params.author]&amp;quot; and changed &amp;ldquo;avatar&amp;rdquo; to &amp;ldquo;image&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Atom Uninstall</title><link>https://gnupit.net/archives/atom_uninstall/</link><pubDate>Tue, 28 Aug 2018 07:12:15 -0500</pubDate><guid>https://gnupit.net/archives/atom_uninstall/</guid><description>&lt;p&gt;No, the &lt;a href="https://atom.io/"&gt;Atom&lt;/a&gt; text editor does not have an uninstaller. On Mac OS X, to completely uninstall, remove the following files and directories:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~/.atom
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/usr/local/bin/atom (NB only present if command line tools installed)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/usr/local/bin/apm (NB only present if command line tools installed)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/Applications/Atom.app
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.github.atom.sfl
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~/Library/Preferences/com.github.atom.plist
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~/Library/Application Support/com.github.atom.ShipIt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~/Library/Application Support/Atom
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~/Library/Caches/com.github.atom.ShipIt/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~/Library/Saved Application State/com.github.atom.savedState
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~/Library/Logs/Atom/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~/Library/Preferences/com.github.atom.helper.plist
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~/Library/Preferences/com.github.atom.LSSharedFileList.plist
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~/Library/Preferences/ByHost/com.github.atom.ShipIt.&amp;lt;letters/numbers&amp;gt;.plist
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~/Library/Saved Application State/com.github.atom.savedState
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;```text
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;*NB:* The `&amp;lt;letter/numbers&amp;gt;` in the file name located in `~/Library/Preferences/ByHost` appear to be a unique string per machine.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;*NB:* Some of these files/directories may not be present. Older installations are likely to have all of them. Some of them aren&amp;#39;t on my system with a new Atom install.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;**DO NOT, UNDER ANY CIRCUMSTANCES, COPY AND PASTE THE CODE ABOVE INTO THE TERMINAL WITH `rm`.** The code contains spaces and cannot be used on the command line without escaping the spaces.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Thoughts on the Atom Editor</title><link>https://gnupit.net/archives/atom_editor/</link><pubDate>Mon, 27 Aug 2018 14:54:03 -0500</pubDate><guid>https://gnupit.net/archives/atom_editor/</guid><description>&lt;p&gt;I installed the &lt;a href="https://atom.io/"&gt;Atom&lt;/a&gt; text editor quite a while ago and didn&amp;rsquo;t have much time to play around with it. Last week a friend of mine brought it up in conversation. She was extolling its virtues. I decided now would be a good time to try it out. I was moving a site to &lt;a href="https://gohugo.io"&gt;Hugo&lt;/a&gt; and it has a plugin for Hugo syntax.&lt;/p&gt;
&lt;p&gt;So I fired it up and, my word, a decade later an editor window opened. What took it so long to open? I poked around a bit and noticed that I had installed a bunch of packages when I first downloaded it. So I disabled the vast majority of them, then restarted. A minor improvement. Disabled the rest. Restarted. Another minor improvement. Then I disabled some core packages for languages I wouldn&amp;rsquo;t use. No help for the incredibly slow start time.&lt;/p&gt;</description></item><item><title>Deprecated nf_conntrack automatic helper assignment</title><link>https://gnupit.net/posts/nf_conntrack/</link><pubDate>Thu, 21 Dec 2017 22:26:24 -0500</pubDate><guid>https://gnupit.net/posts/nf_conntrack/</guid><description>&lt;p&gt;For quite a while, I&amp;rsquo;ve been getting the &amp;ldquo;nf_conntrack: automatic helper assignment is deprecated and it will be removed soon&amp;rdquo; warning at boot. So I can&amp;rsquo;t say I was too surprised when I started getting &amp;ldquo;kernel: nf_conntrack: default automatic helper assignment has been turned off for security reasons and CT-based  firewall rule not found. Use the iptables CT target to attach helpers instead.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Back in January/February 2017 there was a &lt;a href="http://lkml.iu.edu/hypermail/linux/kernel/1702.0/00470.html"&gt;post&lt;/a&gt; on the Linux-Kernel mailing list submitting a patch to print out the warning so firewall admins would at least have notice. As best as I can tell from reading a ton of stuff, the warning is logged if a packet which would have otherwise traversed your firewall didn&amp;rsquo;t because there was no helper available. More information can be found at &lt;a href="https://home.regit.org/netfilter-en/secure-use-of-helpers/"&gt;Secure use of iptables and connection tracking helpers&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Nginx, OCSP stapling, booting, systemd and Debian 9</title><link>https://gnupit.net/posts/systemd_nginx_fix/</link><pubDate>Sun, 10 Dec 2017 18:26:24 -0500</pubDate><guid>https://gnupit.net/posts/systemd_nginx_fix/</guid><description>&lt;p&gt;Noticed these lines in journalctl when nginx didn&amp;rsquo;t start after a reboot:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Dec 10 17:43:30 mail1 nginx[3485]: nginx: [warn] &amp;#34;ssl_stapling&amp;#34; ignored, host not found in OCSP responder &amp;#34;ocsp.int-x3.letsencrypt.org&amp;#34; in the certificate &amp;#34;/etc/letsencrypt/live/www.example.com/fullchain.pem&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Dec 10 17:43:30 mail1 nginx[3485]: nginx: [emerg] bind() to [&amp;lt;IPv6 address&amp;gt;]:80 failed (99: Cannot assign requested address)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Dec 10 17:43:30 mail1 nginx[3485]: nginx: configuration file /etc/nginx/nginx.conf test failed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Dec 10 17:43:30 mail1 systemd[1]: nginx.service: Control process exited, code=exited status=1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Dec 10 17:43:30 mail1 systemd[1]: nginx.service: Unit entered failed state.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Dec 10 17:43:30 mail1 systemd[1]: nginx.service: Failed with result &amp;#39;exit-code&amp;#39;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Dec 10 17:52:35 mail1 systemd[1]: nginx.service: Failed to read PID from file /run/nginx.pid: Invalid argument
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Hmmm&amp;hellip;&lt;/p&gt;</description></item><item><title>Script: Update Linode DNS Records with WAN IPs (Dynamic DNS)</title><link>https://gnupit.net/posts/dyndns_linode/</link><pubDate>Mon, 27 Nov 2017 10:30:24 -0500</pubDate><guid>https://gnupit.net/posts/dyndns_linode/</guid><description>&lt;p&gt;Either of these scripts will grab both the IPv4 and IPv6 (if any) addresses assigned to any WAN I&amp;rsquo;m behind, and, using Linode&amp;rsquo;s DNS API, will update my DNS records with same and log changes/errors using logger. In effect, it&amp;rsquo;s a homemade Dynamic DNS updater. Linode&amp;rsquo;s developing a new API so that&amp;rsquo;s why  two versions exist.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bitbucket.org/troubleshooter/dns-record-updater-for-linode-dns/src/master/"&gt;Download from Bitbucket&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To use the script, you need:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A Linode API key (for &lt;a href="https://www.linode.com/api/dns"&gt;version 3 of Linode&amp;rsquo;s DNS API&lt;/a&gt;) or Personal Access Token (for &lt;a href="https://developers.linode.com/v4/introduction"&gt;version 4 of Linode&amp;rsquo;s DNS API&lt;/a&gt;),&lt;/li&gt;
&lt;li&gt;the domain ID, and&lt;/li&gt;
&lt;li&gt;the resource (called record in v4) IDs of the DNS records you want to update.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The IDs don&amp;rsquo;t change, whether you&amp;rsquo;re using version 3 or version 4.&lt;/p&gt;</description></item><item><title>Drush cron's not so quiet --quiet flag</title><link>https://gnupit.net/archives/drush_not_quiet/</link><pubDate>Thu, 09 Nov 2017 18:26:24 -0500</pubDate><guid>https://gnupit.net/archives/drush_not_quiet/</guid><description>&lt;p&gt;I use drush to execute cron on my &lt;a href="https://drupal.org"&gt;Drupal&lt;/a&gt; sites. After upgrading drush from version 5 to version 8, I started receiving empty emails from cron each time drush was executed. Checked my cron entries and everything looked fine. Researched a whole bunch on the Internet. Couldn&amp;rsquo;t find much of anything about empty emails related to drush so I redirected the output to a log. Sure enough, even with the &amp;ndash;quiet option, drush cron still outputs a blank line. Why? I&amp;rsquo;ve no clue.&lt;/p&gt;</description></item><item><title>One-Liners</title><link>https://gnupit.net/posts/one-liners/</link><pubDate>Fri, 19 May 2017 18:26:24 -0500</pubDate><guid>https://gnupit.net/posts/one-liners/</guid><description>&lt;h2 id="handy-one-liners"&gt;Handy One-Liners&lt;/h2&gt;
&lt;p&gt;This page is a collection of random one-liners I&amp;rsquo;ve used and wanted to keep track of.&lt;/p&gt;
&lt;h3 id="list-contents-of-all-crontabs"&gt;list contents of all crontabs&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Let's Encypt SSL Certificates with Exim, Dovecot &amp; NGINX</title><link>https://gnupit.net/posts/exim_dovecot_nginx_letsencrypt/</link><pubDate>Fri, 19 May 2017 14:32:24 -0500</pubDate><guid>https://gnupit.net/posts/exim_dovecot_nginx_letsencrypt/</guid><description>&lt;p&gt;I ran into two issues when setting up Let&amp;rsquo;s Encrypt SSL certificates on two of my servers - permission issues for Exim and the certbot cron job supplied by the package doesn&amp;rsquo;t handle the renew very well for nginx, exim or dovecot.&lt;/p&gt;
&lt;h3 id="resolving-exims-permission-problems"&gt;Resolving Exim&amp;rsquo;s Permission Problems&lt;/h3&gt;
&lt;p&gt;1. Create a new group. I named it sslcerts. Add the exim user to that group. If you&amp;rsquo;re not using Debian, adjust the user in the command below.&lt;/p&gt;</description></item><item><title>Boot issue with systemd and NGINX</title><link>https://gnupit.net/posts/nginx_boot_issue/</link><pubDate>Mon, 08 May 2017 21:11:24 -0500</pubDate><guid>https://gnupit.net/posts/nginx_boot_issue/</guid><description>&lt;p&gt;I ran into a problem with NGINX failing to start on boot/reboot on my Debian 8 (Jessie) server. After reviewing what seemed like a hundred sites to try to find a fix, I stumbled across one solution that worked, but was incredibly inelegant. This was to add:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;RestartSec=30s
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Restart=on-failure
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;to nginx.service in the [Service] section using the override.conf. It worked but didn&amp;rsquo;t fix the underlying problem.&lt;/p&gt;
&lt;p&gt;A quick look using &lt;code&gt;journalctl -u nginx&lt;/code&gt; showed that the service was failing because the IPv6 address hadn&amp;rsquo;t been assigned to the network adaptor yet. This caused nginx to fail because it couldn&amp;rsquo;t bind to the IPv6 port. Here are the log lines:&lt;/p&gt;</description></item><item><title>Script: Assemble NGINX Configuration Files</title><link>https://gnupit.net/posts/nginx_merge_script/</link><pubDate>Fri, 12 Sep 2014 19:19:24 -0500</pubDate><guid>https://gnupit.net/posts/nginx_merge_script/</guid><description>&lt;p&gt;&lt;a href="https://bitbucket.org/troubleshooter/merge-ngx-conf/src/master/"&gt;merge-ngx-conf.pl&lt;/a&gt; is a perl script used to assemble a set of nginx configuration files for one site. It has a number of options. See the bitbucket page or the help documentation in the script itself.&lt;/p&gt;
&lt;p&gt;In its simplest form, it&amp;rsquo;s called by issuing this command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;merge-ngx-conf.pl /path/sites-available/filename&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The output is an assembled nginx configuration file with all the includes inserted. Using &lt;code&gt;nginx.conf&lt;/code&gt; and &lt;code&gt;domain.conf&lt;/code&gt; (or just &lt;code&gt;domain.conf&lt;/code&gt; depending on the options selected), the script iterates through the include directives in the files and inserts the text from the referenced file. The script handles wildcard masks and follows include directives down multiple levels (i.e. nested levels). It will also follow referenced files in directories external to the nginx configuration directory.&lt;/p&gt;</description></item><item><title>Script: Parse Mail Headers</title><link>https://gnupit.net/posts/parse_mail_headers/</link><pubDate>Wed, 07 Nov 2012 19:51:24 -0500</pubDate><guid>https://gnupit.net/posts/parse_mail_headers/</guid><description>&lt;p&gt;Here&amp;rsquo;s a perl script I put together that uses Email::Simple to extract the headers from a message. See link below.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m using it to examine spam. It parses all the headers, with a focus on the Received headers. It should be easy to alter it to examine any header you want. As it is currently written, it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;finds all the Received headers&lt;/li&gt;
&lt;li&gt;finds the first Received header that was added to the mail (presumably the header added by the first MTA that received it)&lt;/li&gt;
&lt;li&gt;extracts the IP from that header&lt;/li&gt;
&lt;li&gt;does an rDNS lookup&lt;/li&gt;
&lt;li&gt;if there&amp;rsquo;s a hostname, it looks up the nameservers for the base domain.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;By &amp;ldquo;base domain&amp;rdquo; I mean that if the rDNS returns a hostname like &amp;ldquo;1234.my.example.domain.com&amp;rdquo;, the base domain would be &amp;ldquo;domain.com&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Possible Android Botnet and Yahoo! Mail</title><link>https://gnupit.net/posts/spam_android_yahoo/</link><pubDate>Mon, 09 Jul 2012 21:43:24 -0500</pubDate><guid>https://gnupit.net/posts/spam_android_yahoo/</guid><description>&lt;p&gt;I&amp;rsquo;ve read a number of articles over the past few days about the possible Android botnet and Yahoo! mail. No consensus yet but that&amp;rsquo;s not necessary to stop the spam at the server level, at least in my case. Of the spam I received so far, these characteristics stand out:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Only one of my mail accounts is receiving the spam. It&amp;rsquo;s not an account that usually receives spam. My long-time mail addresses that seem to have made it to most of the spam lists don&amp;rsquo;t get this spam. Makes me wonder where they picked up this address from.&lt;/p&gt;</description></item><item><title>Fighting Spam and Malicious Attacks</title><link>https://gnupit.net/posts/fight_spam_mal_attacks/</link><pubDate>Mon, 09 Jul 2012 18:26:24 -0500</pubDate><guid>https://gnupit.net/posts/fight_spam_mal_attacks/</guid><description>&lt;p&gt;Geez.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m feeling somewhat frustrated in dealing with an ISP that has a clearly compromised IP. I&amp;rsquo;ve been getting dictionary attacks on my mailserver for the past four days from the same IP. It&amp;rsquo;s assigned to a domain name. So I did what I normally do at first - let CSF (&lt;a href="http://configserver.com"&gt;ConfigServer Security &amp;amp; Firewall&lt;/a&gt; - a fantastic free piece of software) handle it. The IP gets blocked for an hour. Usually, that&amp;rsquo;s all it takes for the attacker to go away and generally not come back. Not in this case. Four days into it, I decide to do an IP lookup and find out who it belongs to. So I find out the website URL and head over to it to see if I can find any contact information. I find a webmaster address, compose my e-mail telling them to check their server, that it&amp;rsquo;s probably compromised and that I&amp;rsquo;m blocking the IP permanently in my firewall. E-mail bounces - unknown address. So then I go to the contact form, fill that out and press send - page not found. Find another address and send an e-mail off to that address. Success. Notice that the web site doesn&amp;rsquo;t seem to have been updated since 2008 so I decide to do a whois and find out who the isp is. Send a message to the NOC. They send a message back and say report it to abuse. I forward my message to abuse and get the standard reply that you seem to get from abuse addresses - Sorry, but we get so much mail at abuse@whoever that we can&amp;rsquo;t respond personally to each one. If you&amp;rsquo;re writing about spam&amp;hellip;blah, blah, blah.&lt;/p&gt;</description></item><item><title>Virtual Memory Overcommit Explained</title><link>https://gnupit.net/posts/virt_mem_overcommit/</link><pubDate>Sat, 16 Jun 2012 13:21:24 -0500</pubDate><guid>https://gnupit.net/posts/virt_mem_overcommit/</guid><description>&lt;p&gt;Ran across these posts today on virtual memory overcommit in linux. Interesting reading and I learned quite a few things.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://utcc.utoronto.ca/~cks/space/blog/linux/LinuxVMOvercommit"&gt;How Linux handles virtual memory overcommit&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://utcc.utoronto.ca/~cks/space/blog/unix/MemoryOvercommit"&gt;Understanding the virtual memory overcommit issue&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to &lt;a href="http://utcc.utoronto.ca/~cks/space/People/ChrisSiebenmann"&gt;Chris Siebenmann&lt;/a&gt; for helping me to understand things a bit better.&lt;/p&gt;
&lt;p&gt;Originally published 2012-06-16&lt;/p&gt;</description></item><item><title>nginx core module: worker_rlimit_nofile</title><link>https://gnupit.net/posts/worker_rlimit_nofile/</link><pubDate>Sat, 16 Jun 2012 00:54:24 -0500</pubDate><guid>https://gnupit.net/posts/worker_rlimit_nofile/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Configuration file: nginx.conf
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Block: main
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Value type: number
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Default: none - system determined (see notes section below)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;What it does: sets the value for the maximum file descriptors
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; that can be opened by a single worker process
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Example: worker_rlimit_nofile 1024;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;NOTES:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When any program opens a file, the operating system (OS) returns a file descriptor (FD) that corresponds to that file. The program will refer to that FD in order to process the file. The limit for the maximum FDs on the server is usually set by the OS. To determine what the FD limits are on your server use the commands &amp;lsquo;ulimit -Hn&amp;rsquo; and &amp;lsquo;ulimit -Sn&amp;rsquo; which will give you the per user hard and soft file limits. To determine the maximum number of FDs available, use the command &amp;lsquo;sysctl fs.file-max&amp;rsquo; or &amp;lsquo;cat /proc/sys/fs/file-max&amp;rsquo;.&lt;/p&gt;</description></item><item><title>Legitimate Companies Who Market by E-Mail - Food For Thought</title><link>https://gnupit.net/posts/legit_email_marketing/</link><pubDate>Fri, 15 Jun 2012 18:26:24 -0500</pubDate><guid>https://gnupit.net/posts/legit_email_marketing/</guid><description>&lt;p&gt;I&amp;rsquo;ve just gone through a boatload of &amp;ldquo;pseudo&amp;rdquo;-spam. Pseudo-spam is what I call legitimate e-mail that, when using a vanilla installation of &lt;a href="http://spamassassin.apache.org"&gt;Spamassassin&lt;/a&gt;, is marked as spam solely through the e-mail creator&amp;rsquo;s carelessness, thoughtlessness, whatever adjective you want to use (I refrained from using stupidity although I desperately wanted to). This morning, 25% of the number of e-mails that were classified as spam were actually legitimate. After analyzing the Spamassassin rules that were triggered, many rules were needlessly fired. Had the creator taken the time to format the html properly, many of the rules wouldn&amp;rsquo;t have been triggered.&lt;/p&gt;</description></item><item><title>HTML Email</title><link>https://gnupit.net/posts/html_email/</link><pubDate>Fri, 15 Jun 2012 11:52:24 -0500</pubDate><guid>https://gnupit.net/posts/html_email/</guid><description>&lt;p&gt;I loathe HTML email for many reasons. Privacy and security are two. A Google search for &amp;ldquo;html email security&amp;rdquo; returned about 328,000,000 results and &amp;ldquo;html email privacy&amp;rdquo; returned about 2,010,000,000 results. That&amp;rsquo;s billions, folks.&lt;/p&gt;
&lt;p&gt;For me, it&amp;rsquo;s one of those &amp;ldquo;just because you can doesn&amp;rsquo;t mean you should&amp;rdquo; things. I just analyzed a corpus of 4267 messages, a mixture of personal and marketing, looking for image references. One message contained 343 references to images. Seriously? I have less images of my wedding, one of the most important events of my life. The size of the message, without the images downloaded - 188K. I don&amp;rsquo;t have the time to download all the images and come up with a true size.&lt;/p&gt;</description></item></channel></rss>