<?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>Kent Oyer</title>
	<atom:link href="https://kentoyer.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://kentoyer.com</link>
	<description>Adventures in I.T.</description>
	<lastBuildDate>Thu, 18 Mar 2021 18:44:03 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.7</generator>
	<item>
		<title>Migrating from Plesk 9.5 to Plesk Onyx 17.0 on Linux</title>
		<link>https://kentoyer.com/2021/03/18/migrating-from-plesk-9-5-to-plesk-onyx-17-0-on-linux/</link>
					<comments>https://kentoyer.com/2021/03/18/migrating-from-plesk-9-5-to-plesk-onyx-17-0-on-linux/#comments</comments>
		
		<dc:creator><![CDATA[Kent]]></dc:creator>
		<pubDate>Thu, 18 Mar 2021 18:44:02 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[plesk]]></category>
		<guid isPermaLink="false">http://www.kentoyer.com/?p=343</guid>

					<description><![CDATA[I recently migrated from a dedicated server running CentOS 5 and Plesk 9.5 to a virtual server running CentOS 7 and Plesk Onyx 17.0. The new server is running on an EC2 instance at Amazon. Here are my notes. Plesk Installation The first error I encountered was during the installation of Plesk. During the install [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I recently migrated from a dedicated server running CentOS 5 and Plesk 9.5 to a virtual server running CentOS 7 and Plesk Onyx 17.0. The new server is running on an EC2 instance at Amazon. Here are my notes.</p>
<h2>Plesk Installation</h2>
<p>The first error I encountered was during the installation of Plesk. During the install I got this error:</p>
<blockquote><p>Exception: Failed to solve dependencies:<br />
psa-mail-driver-common-17.0.17-cos7.build1700161124.17.x86_64 requires libopendkim.so.10()(64bit)</p>
<p>ERROR: The Yum utility failed to install the required packages.<br />
Attention! Your software might be inoperable.<br />
Please contact product technical support.</p></blockquote>
<p>Apparently CentOS 7 installs libopendkim-2.11 by default and Plesk requires version 2.10. To solve this I had to download and install libopendkim-2.10 which I found on the Plesk site:</p>
<p>http://parallels.bhs.mirrors.ovh.net/parallels/PSA_17.0.17/thirdparty-rpm-CentOS-7-x86_64/libopendkim-2.10.3-3.el7.x86_64.rpm</p>
<p>Download this file and install it with:</p>
<blockquote><p>rpm -Uvh libopendkim-2.10.3-3.el7.x86_64.rpm</p></blockquote>
<p>Then you can proceed with the Plesk Installation</p>
<h2>Email Configuration</h2>
<p>Enable port 587 for sending mail. This can be changed under Tools &amp; Settings -&gt; Mail Server Settings.</p>
<p>Make TLS optional on port 587.</p>
<blockquote><p>1. Edit /etc/postfix/master.cf<br />
2. Find the line that starts with &#8220;submission&#8221;<br />
3. Change smtpd_tls_security_level to &#8220;may&#8221; instead of &#8220;encrypt&#8221;</p></blockquote>
<p>Set queue lifetime to more sensible values by running these commands:</p>
<blockquote><p>postconf -e &#8220;maximal_queue_lifetime=2h&#8221;<br />
postconf -e &#8220;minimal_backoff_time=5m&#8221;<br />
postconf -e &#8220;maximal_backoff_time=15m&#8221;<br />
postconf -e &#8220;queue_run_delay=5m&#8221;</p></blockquote>
<p>Upload your SSL certificate. This is really easy do to in Plesk 17. Just go to Tools &amp; Settings -&gt; SSL/TLS Certificates and follow the instructions there.</p>
<h2>Email Migration</h2>
<p>I used the Plesk Migration Manager to migrate all the domains and users and users mailboxes to the new server. However, the Migration Manager was lacking in a couple areas. First, it did not migrate any IMAP folders. It migrated the users&#8217; inbox but if they had any IMAP folders, those did not get migrated. The solution I found was to use rsync. I wrote a little shell script to iterate through all the Maildir folders on the new server and copy the data from the old server using rsync. Create a file called syncmail.sh on the new server and paste in this code:</p>
<blockquote><p>#!/bin/sh<br />
DOMAIN=$1<br />
SOURCE_SERVER=old.servername.com</p>
<p>find /var/qmail/mailnames/$DOMAIN -maxdepth 2 -name Maildir &gt;/tmp/maildirs.txt</p>
<p>while read MAILDIR; do<br />
echo &#8220;Syncing $MAILDIR&#8221;<br />
rsync -av &#8211;delete $SOURCE_SERVER:$MAILDIR/ $MAILDIR/<br />
done &lt;/tmp/maildirs.txt</p></blockquote>
<p>This script syncs one domain at a time so you need to specify the domain name as the first argument when running the script. But you could change it to do all domains at once by leaving the domain name blank and changing maxdepth to 3. This not only copies the IMAP folders but it also syncs any changes made to the inbox on the old server such as new messages that have arrived or messages the user may have deleted. You can run this script as many times as you want and it will only copy the changes.</p>
<p>The second major flaw with the migration manager is that it doesn&#8217;t preserve the UID of each message. The UID is how Outlook and other mail clients determine which messages have already been downloaded. So if you don&#8217;t preserve the UID&#8217;s from the old server, Outlook will re-download all the messages again and you will have lots of users with lots of duplicate emails. I think the reason it didn&#8217;t preserve the UID&#8217;s is because the old server was using Courier-IMAP and the new server was using Dovecot. Luckily I found a utility online that can convert the UID&#8217;s from Courier to Dovecot. You can download it from http://wiki.dovecot.org/Migration/Courier. To use the script just do this on the new server after the mailbox has been copied over:</p>
<blockquote><p>courier-dovecot-migrate.pl &#8211;to-dovecot &#8211;convert $MAILDIR</p></blockquote>
<p>Where $MAILDIR is the location of the users Maildir folder. (/var/qmail/mailnames/domain.com/user@domain.com/Maildir). I even incorporated this step into the syncmail.sh script right after the rsync command like this:</p>
<blockquote><p>#!/bin/sh<br />
DOMAIN=$1<br />
SOURCE_SERVER=old.servername.com</p>
<p>find /var/qmail/mailnames/$DOMAIN -maxdepth 2 -name Maildir &gt;/tmp/maildirs.txt</p>
<p>while read MAILDIR; do<br />
echo &#8220;Syncing $MAILDIR&#8221;<br />
rsync -av &#8211;delete $SOURCE_SERVER:$MAILDIR/ $MAILDIR/<br />
courier-dovecot-migrate.pl &#8211;to-dovecot &#8211;convert $MAILDIR<br />
done &lt;/tmp/maildirs.txt</p></blockquote>
<p>So now the script copies (syncs) all the email from all the Maildir folders on the old server to the new server and then converts the Courier-IMAP files into the format expected by Dovecot so all the UID&#8217;s are the same. Brilliant!</p>
<p>The overall process went something like this:</p>
<ol>
<li>Use the Migration Manager to do the initial copy. That gets all the users setup on your new server with the same passwords as before.</li>
<li>Use the script to copy over the rest of the mailbox data for each domain.</li>
<li>Disable mail on the old server. I blocked all the mail-related ports (25,110,143,587,465,993 &amp; 995) so that no new messages could come in and users could no longer connect to the old server</li>
<li>Run the script again to pickup any last minute changes</li>
<li>Change your hostname and MX records to point to the new server.</li>
</ol>
<p>I didn&#8217;t want to go around and change the incoming and outgoing mail server settings in every mail client and smartphone, so I just pointed my old hostname to the new server&#8217;s IP address.</p>
<h2>Website Migration</h2>
<p>The Migration Manager did a good job of copying all the website files and databases from the old server to the new server</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kentoyer.com/2021/03/18/migrating-from-plesk-9-5-to-plesk-onyx-17-0-on-linux/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Manually detach WordPress instances from Plesk WordPress Toolkit</title>
		<link>https://kentoyer.com/2021/03/18/manually-detach-wordpress-instances-from-plesk-wordpress-toolkit/</link>
					<comments>https://kentoyer.com/2021/03/18/manually-detach-wordpress-instances-from-plesk-wordpress-toolkit/#respond</comments>
		
		<dc:creator><![CDATA[Kent]]></dc:creator>
		<pubDate>Thu, 18 Mar 2021 18:37:41 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[plesk]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://kentoyer.com/?p=394</guid>

					<description><![CDATA[Let&#8217;s say you manually deleted a WordPress directory that was being managed by the Plesk WordPress Toolkit. Now the directory is gone but it still shows up in the WordPress Toolkit with an error, OR it doesn&#8217;t show up in WordPress Toolkit but you still get daily emails about the non-existent WordPress installation. These instructions [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Let&#8217;s say you manually deleted a WordPress directory that was being managed by the Plesk WordPress Toolkit. Now the directory is gone but it still shows up in the WordPress Toolkit with an error, OR it doesn&#8217;t show up in WordPress Toolkit but you still get daily emails about the non-existent WordPress installation. These instructions will help you manually remove the instance from the WordPress Toolkit.</p>



<p>These steps are for <strong>Plesk Obsidian 18</strong> but may work for other versions. First, you need to get the domain ID from MySQL:</p>



<pre class="wp-block-code"><code># mysql -D psa

> select id from domains where name = 'example.com';

+----+
| id |
+----+
| 88 |
+----+
1 row in set (0.00 sec)
</code></pre>



<p>Then you need to find the WordPress instance ID using sqlite:</p>



<pre class="wp-block-code"><code><code># sqlite3 /usr/local/psa/var/modules/wp-toolkit/wp-toolkit.sqlite3</code>
<code>sqlite> .mode columns</code>
<code>sqlite> .headers on</code>
<code>sqlite> select * from instances where domainId = 88;</code>
<code>id          domainId    path                  isIgnored   apsInstanceId  serverId</code>
<code>----------  ----------  --------------------  ----------  -------------  ----------</code>
<code>18          <strong>88</strong>          /httpdocs             0</code>
<code><strong>19          88          /httpdocs.old/blog</strong>    <strong>0</strong></code></code></pre>



<p>Here you can see there are two instances for the same domain, however, one is old and needs to be removed.</p>



<p>Finally, you can detach the non-existent instance using the Plesk command line utility:</p>



<pre class="wp-block-code"><code># plesk ext wp-toolkit --detach -instance-id 19</code></pre>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://kentoyer.com/2021/03/18/manually-detach-wordpress-instances-from-plesk-wordpress-toolkit/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Working with git</title>
		<link>https://kentoyer.com/2016/11/17/working-with-git/</link>
					<comments>https://kentoyer.com/2016/11/17/working-with-git/#respond</comments>
		
		<dc:creator><![CDATA[Kent]]></dc:creator>
		<pubDate>Thu, 17 Nov 2016 21:01:02 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://www.kentoyer.com/?p=330</guid>

					<description><![CDATA[The Basics Download a repository from github git clone &#60;url&#62; Push changes back to github git commit -a -m &#8220;Commit Message&#8221; git push This will only publish modified files. If you&#8217;ve added any new files you have to manually stage them with git add &#60;filename&#62; Or if you want to stage all new, modified &#38; [&#8230;]]]></description>
										<content:encoded><![CDATA[<h3>The Basics</h3>
<p>Download a repository from github</p>
<blockquote><p>git clone &lt;url&gt;</p></blockquote>
<p>Push changes back to github</p>
<blockquote><p>git commit -a -m &#8220;Commit Message&#8221;<br />
git push</p></blockquote>
<p>This will only publish modified files. If you&#8217;ve added any new files you have to manually stage them with</p>
<blockquote><p>git add &lt;filename&gt;</p></blockquote>
<p>Or if you want to stage all new, modified &amp; deleted files, use</p>
<blockquote><p>git add -A</p></blockquote>
<p>To see what files have been staged before doing a commit, use</p>
<blockquote><p>git status</p></blockquote>
<h3>Saving Credentials</h3>
<p>You will be asked for your github username and password every time you push. To prevent this you can use the credential helper. Enable the credential helper with</p>
<blockquote><p>git config credential.helper store</p></blockquote>
<p>The next time you do a push, your credentials will be stored for future use. Your credentials will be stored in this file</p>
<blockquote><p>~/.git-credentials</p></blockquote>
<h3>Working with Branches</h3>
<p>To see a list of all branches in the current repository type</p>
<blockquote><p>git branch</p></blockquote>
<p>To create a new local branch</p>
<blockquote><p>git branch &lt;branch-name&gt;</p></blockquote>
<p>If you want to switch to another branch you can use</p>
<blockquote><p>git checkout &lt;branch-name&gt;</p></blockquote>
<p>To create a new local branch and switch to it in one step</p>
<blockquote><p>git checkout -b &lt;branch-name&gt;</p></blockquote>
<p>To delete a branch, use</p>
<blockquote><p>git branch -d &lt;branch-name&gt;</p></blockquote>
<p>Push the new branch to the remote server</p>
<blockquote><p>git push origin &lt;branch-name&gt;</p></blockquote>
<h3>Syncing a forked repository</h3>
<p>So you&#8217;ve forked a repository and made some changes to it but the original repository has also been updated. You&#8217;d like to sync those changes from the original repo into your fork without losing the changes you&#8217;ve made.</p>
<p>Start by adding a remote called &#8216;upstream&#8217; that points to the original repo</p>
<blockquote><p>git add remote upstream  https://github.com/path/to/original/repo.git</p></blockquote>
<p>Then fetch all the branches from the upstream remote</p>
<blockquote><p>get fetch upstream</p></blockquote>
<p>First make sure you are in the master branch, then merge the upstream master into our own master</p>
<blockquote><p>git checkout master<br />
get merge upstream/master</p></blockquote>
<p>Then your local master should updated with the changes from the original repo. The final step is to push the merged copy back to the server by simply doing</p>
<blockquote><p>get push</p></blockquote>
<p>Source: http://stackoverflow.com/questions/7244321/how-do-i-update-a-github-forked-repository/7244456#7244456</p>
<p>If you have any branches, you need to rebase them to your master like this</p>
<blockquote><p>git checkout &lt;branch name&gt;<br />
git rebase master</p></blockquote>
<h3>Ignoring files</h3>
<p>If your project depends on other projects and you&#8217;re using composer to autoload them, you might want to use a .gitignore file so your dependency files are not included in your project. Just create a .gitignore file in the root of your project and add these 2 lines</p>
<blockquote><p>vendor<br />
composer.lock</p></blockquote>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kentoyer.com/2016/11/17/working-with-git/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Mapped drives suddenly disconnect and reconnect on Windows 8.1</title>
		<link>https://kentoyer.com/2015/04/28/mapped-drives-suddenly-disconnect-and-reconnect-on-windows-8-1/</link>
					<comments>https://kentoyer.com/2015/04/28/mapped-drives-suddenly-disconnect-and-reconnect-on-windows-8-1/#comments</comments>
		
		<dc:creator><![CDATA[Kent]]></dc:creator>
		<pubDate>Tue, 28 Apr 2015 20:49:38 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://www.kentoyer.com/?p=317</guid>

					<description><![CDATA[I was having a problem where mapped drives would suddenly disappear and then reappear randomly throughout the day. If I had any Explorer Windows open at the time, I would get the following message: Location is not available. &#60;mapped drive&#62; is unavailable. If the location is on this PC, make sure the device is connected [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I was having a problem where mapped drives would suddenly disappear and then reappear randomly throughout the day. If I had any Explorer Windows open at the time, I would get the following message:</p>
<p><a href="http://www.kentoyer.com/wp-content/uploads/image001.jpg"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-319" src="http://www.kentoyer.com/wp-content/image001.jpg" alt="image001" width="573" height="169" srcset="https://kentoyer.com/wp-content/uploads/image001.jpg 573w, https://kentoyer.com/wp-content/uploads/image001-300x88.jpg 300w" sizes="(max-width: 573px) 100vw, 573px" /></a></p>
<blockquote><p>Location is not available. &lt;mapped drive&gt; is unavailable. If the location is on this PC, make sure the device is connected or the disc is inserted, and then try again. If the location is on a network, make sure you&#8217;re connect to the network or Internet, and the try again. If the location still can&#8217;t be found, it might have been moved or deleted.</p></blockquote>
<p>I pulled my hair out for weeks trying to figure out what was causing it. I ruled out other causes such as the physical network, permission issues, and the antivirus software. Finally I discovered that I could reproduce the issue by opening one of the mapped network drives in Windows Explorer and then running &#8220;gpupdate /force&#8221; from a command prompt. So I knew it had to be a Group Policy that was causing it.</p>
<p>I discovered that the drives were being mapped using Group Policy Preferences and the Action was set to &#8220;Replace.&#8221; So every time the policy was applied, it would remove the drive mapping and recreate it, killing any open connections.</p>
<p><a href="http://www.kentoyer.com/wp-content/uploads/Image1.jpg"><img decoding="async" class="aligncenter size-full wp-image-321" src="http://www.kentoyer.com/wp-content/Image1.jpg" alt="Image1" width="403" height="447" srcset="https://kentoyer.com/wp-content/uploads/Image1.jpg 403w, https://kentoyer.com/wp-content/uploads/Image1-270x300.jpg 270w" sizes="(max-width: 403px) 100vw, 403px" /></a></p>
<p>The odd thing is that it didn&#8217;t seem to affect any of the Windows 7 clients but both the Windows 8.1 clients were experiencing this issue. I changed the Action to &#8220;Update&#8221; and the problem went away.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kentoyer.com/2015/04/28/mapped-drives-suddenly-disconnect-and-reconnect-on-windows-8-1/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Users Prompted to Download, Run, Open Launch.ica File, Instead of Launching Connection</title>
		<link>https://kentoyer.com/2015/01/06/users-prompted-to-download-run-open-launch-ica-file-instead-of-launching-connection/</link>
					<comments>https://kentoyer.com/2015/01/06/users-prompted-to-download-run-open-launch-ica-file-instead-of-launching-connection/#respond</comments>
		
		<dc:creator><![CDATA[Kent]]></dc:creator>
		<pubDate>Tue, 06 Jan 2015 20:44:20 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://www.kentoyer.com/?p=314</guid>

					<description><![CDATA[If this happens, try this: 1. Download the launch.ica file to a folder on your computer. 2. Right-click the launch.ica and click &#8220;open with&#8230;&#8221; 3. Browse to C:\Program files (x86)\Citrix\Receiver\Receiver.exe &#160; The file will not open, but once ICA files are associated with the Citrix Receiver you should be able to launch applications from your [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>If this happens, try this:</p>
<p>1. Download the launch.ica file to a folder on your computer.</p>
<p>2. Right-click the launch.ica and click &#8220;open with&#8230;&#8221;</p>
<p>3. Browse to C:\Program files (x86)\Citrix\Receiver\Receiver.exe</p>
<p>&nbsp;</p>
<p>The file will not open, but once ICA files are associated with the Citrix Receiver you should be able to launch applications from your web browser.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kentoyer.com/2015/01/06/users-prompted-to-download-run-open-launch-ica-file-instead-of-launching-connection/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[WinPE] Autorun.dll is corrupt</title>
		<link>https://kentoyer.com/2014/03/04/winpe-autorun-dll-is-corrupt/</link>
					<comments>https://kentoyer.com/2014/03/04/winpe-autorun-dll-is-corrupt/#respond</comments>
		
		<dc:creator><![CDATA[Kent]]></dc:creator>
		<pubDate>Tue, 04 Mar 2014 22:31:31 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://www.kentoyer.com/?p=304</guid>

					<description><![CDATA[When attempting to run setup.exe from Windows PE, you may get this error message The file &#8216;autorun.dll&#8217; could not be loaded or is corrupt. Setup cannot continue. This will happen if you install the WinPE-Setup package without installing either the WinPE-Setup-Client package or the WinPE-Setup-Server package. &#160;]]></description>
										<content:encoded><![CDATA[<p>When attempting to run setup.exe from Windows PE, you may get this error message</p>
<blockquote><p>The file &#8216;autorun.dll&#8217; could not be loaded or is corrupt. Setup cannot continue.</p></blockquote>
<p>This will happen if you install the WinPE-Setup package without installing either the WinPE-Setup-Client package or the WinPE-Setup-Server package.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kentoyer.com/2014/03/04/winpe-autorun-dll-is-corrupt/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Working with WIM files</title>
		<link>https://kentoyer.com/2014/03/01/working-with-wim-files/</link>
					<comments>https://kentoyer.com/2014/03/01/working-with-wim-files/#respond</comments>
		
		<dc:creator><![CDATA[Kent]]></dc:creator>
		<pubDate>Sat, 01 Mar 2014 16:39:08 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://www.kentoyer.com/?p=297</guid>

					<description><![CDATA[Here are some of the dism commands I use most frequently. Mount a WIM file dism /mount-wim /wimfile:&#8221;D:\path\to\wim\file&#8221; /index:1 /mountdir:D:\mount Dismount a WIM file with commit dism /unmount-win /mountdir:D:\mount /commit Dismount a WIM file with discard dism /unmount-win /mountdir:D:\mount /discard Add a package to a WIM dism /Image:D:\mount /Add-Package /PackagePath:&#8221;C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Here are some of the dism commands I use most frequently.</p>
<p>Mount a WIM file</p>
<blockquote><p>dism /mount-wim /wimfile:&#8221;D:\path\to\wim\file&#8221; /index:1 /mountdir:D:\mount</p></blockquote>
<p>Dismount a WIM file with commit</p>
<blockquote><p>dism /unmount-win /mountdir:D:\mount /commit</p></blockquote>
<p>Dismount a WIM file with discard</p>
<blockquote><p>dism /unmount-win /mountdir:D:\mount /discard</p></blockquote>
<p>Add a package to a WIM</p>
<blockquote><p>dism /Image:D:\mount /Add-Package /PackagePath:&#8221;C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\WINPE-MDAC.cab&#8221;</p></blockquote>
<p>Display a list of the currently mounted WIM&#8217;s</p>
<blockquote><p>dism /get-mountedwiminfo</p></blockquote>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kentoyer.com/2014/03/01/working-with-wim-files/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cannot open Exchange Management Console. Kerberos error. Access Denied.</title>
		<link>https://kentoyer.com/2014/02/23/cannot-open-exchange-management-console-kerberos-error-access-denied/</link>
					<comments>https://kentoyer.com/2014/02/23/cannot-open-exchange-management-console-kerberos-error-access-denied/#respond</comments>
		
		<dc:creator><![CDATA[Kent]]></dc:creator>
		<pubDate>Mon, 24 Feb 2014 03:51:51 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://www.kentoyer.com/?p=300</guid>

					<description><![CDATA[This happened to me after we suffered a brute force attack on one of our 2 domain controllers. There were a number of services which would not start including the Exchange System Attendant and the Exchange Transport service. We were also seeing Event 2130 from source MSExchangeADAccess: Exchange Active Directory Provider could not find an [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>This happened to me after we suffered a brute force attack on one of our 2 domain controllers. There were a number of services which would not start including the Exchange System Attendant and the Exchange Transport service. We were also seeing Event 2130 from source MSExchangeADAccess: Exchange Active Directory Provider could not find an available domain controller in domain &lt;domain name&gt;.</p>
<h2>Soultion 1: Check the time on all domain controllers.</h2>
<p>This was a common suggestion from other posts online but it was not the issue in my case since both servers were in perfect sync.</p>
<p>I decided to run the <a href="http://gallery.technet.microsoft.com/office/Exchange-Management-b9d918b1">EMTShooter</a> script to see what it would say. Basically it gave me the same Access Denied error message. That was not very helpful except it did tell me everything was fine with the IIS PowerShell virtual directory.  So I figured it had to be an account authentication problem of some kind.</p>
<h2>Solution 2: Reset the secure channel</h2>
<p>Open the command prompt on the Exchange server and type:</p>
<blockquote><p>netdom reset &lt;server_name&gt; /domain:&lt;domain_name&gt;</p></blockquote>
<p>The &lt;server_name&gt; should be one of your domain controllers.</p>
<h2>Solution 3: Reset the machine password</h2>
<p>From the command prompt on the Exchange server, type:</p>
<blockquote><p>netdom resetpw /s:&lt;server_name&gt; /ud:&lt;user_name&gt; /pd:*</p></blockquote>
<p>&lt;user_name&gt; should be a domain user with administrative privileges in the format DOMAIN\username</p>
<p>At this point I was able to start all the Exchange services, but the Exchange Management Console was still giving me Kerberos errors. I thought about rebooting the server but I remember reading somewhere about deleting cached Kerberos tickets. The command to do that is:</p>
<blockquote><p>klist purge</p></blockquote>
<p>The klist command is built into Server 2008 R2. After purging the cached Kerberos tickets I was finally able to open the Exchange Management Console and everything was good.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kentoyer.com/2014/02/23/cannot-open-exchange-management-console-kerberos-error-access-denied/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Disable OTA updates on the Samsung Galaxy S4</title>
		<link>https://kentoyer.com/2014/01/24/disable-ota-updates-on-the-samsung-galaxy-s4/</link>
					<comments>https://kentoyer.com/2014/01/24/disable-ota-updates-on-the-samsung-galaxy-s4/#respond</comments>
		
		<dc:creator><![CDATA[Kent]]></dc:creator>
		<pubDate>Fri, 24 Jan 2014 16:38:39 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://www.kentoyer.com/?p=279</guid>

					<description><![CDATA[If you have rooted your Samsung Galaxy S4 and you want to disable over-the-air updates, you can try this: Open Root Explorer Navigate to /system/apps Rename SDM.apk to SDM.apk.old Rename SDM.odex to SDM.odex.old This worked for me. However, if you have the paid version of Titanium Backup you can use Titanium Backup to freeze the [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>If you have rooted your Samsung Galaxy S4 and you want to disable over-the-air updates, you can try this:</p>
<ol>
<li>Open Root Explorer</li>
<li>Navigate to /system/apps</li>
<li>Rename SDM.apk to SDM.apk.old</li>
<li>Rename SDM.odex to SDM.odex.old</li>
</ol>
<p>This worked for me. However, if you have the paid version of Titanium Backup you can use Titanium Backup to freeze the SDM app.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kentoyer.com/2014/01/24/disable-ota-updates-on-the-samsung-galaxy-s4/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Use MIME::Lite to create a multipart message with attachment</title>
		<link>https://kentoyer.com/2013/04/15/mime-lite-create-multipart-message-with-attachment/</link>
					<comments>https://kentoyer.com/2013/04/15/mime-lite-create-multipart-message-with-attachment/#respond</comments>
		
		<dc:creator><![CDATA[Kent]]></dc:creator>
		<pubDate>Mon, 15 Apr 2013 20:28:04 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://www.kentoyer.com/?p=261</guid>

					<description><![CDATA[MIME::Lite is a great Perl module for working with MIME formatted email messages. However, one problem I ran into was trying to create a multipart message that has 1) a text version of the message 2) an HTML version of the message and 3) an HTML attachment. If I set the content type to &#8220;multipart/alternative&#8221; [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>MIME::Lite is a great Perl module for working with MIME formatted email messages. However, one problem I ran into was trying to create a multipart message that has 1) a text version of the message 2) an HTML version of the message and 3) an HTML attachment. If I set the content type to &#8220;multipart/alternative&#8221; then the attachment showed up as part of the message but if I set the content type to &#8220;multipart/mixed&#8221; then the message showed up as an attachment. I couldn&#8217;t find a solution online so I figured it out on my own. Hopefully this helps someone in the future.</p>
<p>To get things right you have to create a multipart/alternative message that is nested within a multipart/mixed message. Here is the code I used:</p>
<blockquote><p>my $html = &#8220;&lt;html&gt;&lt;body&gt;This is the HTML message&lt;/body&gt;&lt;/html&gt;&#8221;;<br />
my $text = &#8220;This is the text message&#8221;;<br />
my $attachment = &#8220;&lt;html&gt;&lt;body&gt;This is the HTML attachment&lt;/body&gt;&lt;/html&gt;&#8221;;<br />
my $email = &#8220;someone@example.com&#8221;;</p>
<p>my $msg = MIME::Lite-&gt;new(<br />
From        =&gt;  &#8216;me@example.com&#8217;,<br />
To          =&gt;  $email,<br />
Subject     =&gt;  &#8216;Test message&#8217;,<br />
Type        =&gt;  &#8216;multipart/mixed&#8217;<br />
);</p>
<p>my $part = MIME::Lite-&gt;new(<br />
Type =&gt; &#8216;multipart/alternative&#8217;,<br />
);<br />
$part-&gt;attach(<br />
Type =&gt; &#8216;text/html; charset=utf-8&#8217;,<br />
Data =&gt; $html,<br />
);<br />
$part-&gt;attach(<br />
Type =&gt; &#8216;text/plain&#8217;,<br />
Data =&gt; $text,<br />
);<br />
$msg-&gt;attach($part);</p>
<p>$msg-&gt;attach(<br />
Type =&gt; &#8216;text/html&#8217;,<br />
Data =&gt; $attachment,<br />
Filename =&gt; &#8216;filename.htm&#8217;,<br />
Disposition =&gt; &#8216;attachment&#8217;<br />
);</p>
<p>$msg-&gt;send;<br />
if ( $msg-&gt;last_send_successful() ) {<br />
print &#8221;  Message sent to $email\n&#8221;;<br />
} else {<br />
print &#8221;  Error sending email to $email\n&#8221;;<br />
}</p></blockquote>
]]></content:encoded>
					
					<wfw:commentRss>https://kentoyer.com/2013/04/15/mime-lite-create-multipart-message-with-attachment/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
