George McKinney Adventures in Software Development

November 8, 2022

Sending Mail from AWS Lightsail using WP MAIL SMTP by Shared Hosting (Mochahost!)

Filed under: AWS,Lightsail,Mochahost,PHP,WordPress — georgemck @ 9:21 pm

AWS Lightsail enables Amazon Web Services customers to host “simple web applications, use pre-configured development stacks like LAMP, Nginx, MEAN, and Node.js.” This includes WordPress-powered websites. Lightsail creates a Debian-based virtual server to host these applications allowing SSH connections. Unfortunately, unlike traditional shared hosting services,  mail functionality is not included. This prevents WordPress from sending emails normally including for password resets. Fortunately, there is an easy to use plugin (WP MAIL SMTP) that provides a number of options for sending email including  SendLayer, SMTP.com, Sendinblue, Mailgun, SendGrid, Postmark, SparkPost, Gmail, Microsoft, Amazon SES, Zoho, and All Other SMTP providers.

Since web services do not need to be provided by the same server address or even the same company. It is possible to split web application hosting from mail server hosting via customizing the DNS zone settings (That topic is not addressed here). The goal of this post is to point out the settings necessary to enable the Lightsail application to use mail settings from one of the “All Other SMTP” providers, specifically Mochahost.

First off, you must create an email account on Mochahost. By doing so, you will immediately know the username and password. The configuration for setting up a mail client are available. However, instead of using the website’s domain it is necessary to use the mail server domain in this case, mochaXXXX.mochahost.com. The port will be 587. Encryption will be TLS. Finally, authentication with username and password are required.

Here is an example of the WP MAIL SMTP plugin settings:

 

 

Now, send a test email:

 

And check your email:

 

All these companies provide great servers and, when you need to scale, you will be in good hands.

 

 

January 12, 2022

Securing an AWS Account with Multi-Factor Authentication

Filed under: AWS,CIS,CIS 192 — georgemck @ 3:49 pm

July 20, 2021

Upgrading to PHP 7.2 on Amazon Linux

Filed under: AWS,CIS 192,PHP — georgemck @ 10:24 pm

#Upgrading to PHP 7.2 on Amazon Linux

#check current version of PHP
php -v

#stop APACHE and PHP services
sudo service httpd stop

#uninstall APACHE and PHP
sudo yum remove httpd* php*

#Get latest updates
sudo yum update -y

#install PHP 7.2
sudo yum install php72

#install MySQL driver for PHP 7.2
sudo yum install php72-mysqlnd

#Start APACHE web server
sudo service httpd start

#cleanup
sudo yum clean all

June 7, 2021

A delivery loop was detected

Filed under: Uncategorized — georgemck @ 12:10 pm

 

One day my email stopped working… Turns out the Google Workspaces had been suspended… So, I had to address that post haste!

 

 

 

 

delivery loop email  undeliverable

 

Error Icon

Message not delivered

Your message couldn’t be delivered to george@burgeoningrhino.io because the remote server is misconfigured. See technical details below for more information.
The response was:
A delivery loop was detected which causes this email to be undeliverable.

 

 

 

 

 

 

May 18, 2021

WordPress Canonical URL, Permalink Redirect, ERR_TOO_MANY_REDIRECTS

Filed under: Apache,WordPress — georgemck @ 3:22 pm

WordPress uses .htaccess to automatically attempt to correct URLs that are misunderstood. This behavior can lead to errors such as ERR_TOO_MANY_REDIRECTS and prevent intended funcationality such as using an index.html as a landing page for the domain. It is possible to Disable WordPress Canonical URL or Permalink Auto Redirect to fix these problems.

 

This code snippet can be placed at the top of the theme’s functions.php file:

remove_filter('template_redirect', 'redirect_canonical'); 

April 20, 2021

Alexa Fact Skill Content

Filed under: Alexa,Amazon,AWS — georgemck @ 5:41 pm

 

const SKILL_NAME = ‘SKILL_NAME ‘;
const GET_FACT_MESSAGE = ‘Here\’s your information: ‘;
const HELP_MESSAGE = ‘You can say tell me a fact, or, tell me about something… What can I help you with?’;
const HELP_REPROMPT = ‘What can I help you with?’;
const STOP_MESSAGE = ‘Goodbye!’;

const data = [
‘Fact Number One.’,
‘Fact Number Two.’
];

const GetNewFactHandler = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return request.type === ‘LaunchRequest’
|| (request.type === ‘IntentRequest’
&& request.intent.name === ‘GetNewFactIntent’);
},
handle(handlerInput) {
const factArr = data;
const factIndex = Math.floor(Math.random() * factArr.length);
const randomFact = factArr[factIndex];
const speechOutput = GET_FACT_MESSAGE + randomFact;

return handlerInput.responseBuilder
.speak(speechOutput)
.withSimpleCard(SKILL_NAME, randomFact)
.getResponse();
},
};

March 10, 2021

AWS CLI Builder

Filed under: AWS — georgemck @ 6:19 pm

Tool for constructing AWS CLI commands

https://awsclibuilder.com/home

Created by https://twitter.com/pdomala

AWS BASH Export Lambda Functions

Filed under: AWS — georgemck @ 6:18 pm

AWS CLI 2 for Exporting Lambdas

https://gist.github.com/TheNetJedi/0847ba0ec1da9879b4fa1d8f3276b004

Export all lambda functions to lambdafunctions directory as indivudual zip files. Be sure to update the region, currently set to us-east-1

 

mkdir lambdafunctions
aws lambda list-functions | \
grep FunctionName | \
cut -d '"' -f4 | \
while read -r name; do
aws lambda get-function --function-name $name | tail -n 3 | egrep -o 'https?://[^ ]+' | sed 's/"//' | xargs wget -O ./lambdafunctions/$name.zip
done

AWS BASH Export Lex Bots

Filed under: AWS — georgemck @ 6:14 pm

AWS CLI 2 for Exporting a Bot

https://docs.aws.amazon.com/lex/latest/dg/export-to-lex.html

https://docs.aws.amazon.com/lex/latest/dg/API_GetExport.html

Export all bots to lexbots directory as indivudual zip files. Be sure to update the region, currently set to us-east-1

 

mkdir lexbots
aws lex-models get-bots | grep name | cut -d '"' -f4 | \
while read -r name; do
echo $name
url=$(aws lex-models get-export --name $name --resource-type BOT --export-type LEX --resource-version 1 --region us-east-1 --output json | grep url | cut -d '"' -f4)
wget $url -O ./lexbots/$name.zip
done

 

March 9, 2021

AWS Shell Gradle Install

Filed under: AWS — georgemck @ 3:12 am

Gradle versions available from:

https://gradle.org/releases/

 

sudo mkdir /opt/gradle
wget -c https://services.gradle.org/distributions/gradle-6.8.3-bin.zip
sudo unzip -d /opt/gradle gradle-6.8.3-bin.zip
export PATH=$PATH:/opt/gradle/gradle-6.8.3/bin

gradle -v

 

**NOTE:   export PATH will have to be done over with every launch of the shell. Alternatively, add it to ~/.bash_profile

PATH=$PATH:$HOME/.local/bin:$HOME/bin:/opt/gradle

 

Older Posts »

Powered by WordPress