mailing setup for mailx, SMTPMailer.php, and nodeMailer

Jul 1, 12:18 PM

for insecure uses, generate a “special” password here: https://myaccount.google.com/u/2/apppasswords?rapt=AEjHLxxxxxx

“special” password is used for mailx (mail.rc) and SMTPMailer.php and insecure nodeMailer

mailx

mailx – uses /etc/mail.rc uses password generated in the step above.

EXAMPLE:
echo `date` | /usr/bin/mailx -A gmailSMTP-noreply -s “test subject TEST” mark@edwardsmark.com ;

/etc/mail.rc:
account gmailSMTP-noreply {
        set smtp-use-starttls
        set ssl-verify=ignore
        set smtp-auth=login
        set smtp=smtp://smtp.gmail.com:587
        set smtp-auth-user=noreply@comptonpeslonline.com
        set smtp-auth-password=gXXXXv
        set ssl-verify=ignore
        set nss-config-dir=/home/comptonpeslonline.com/gmailCerts/
}

php

SMTPMailer.php:
define  (‘DEFAULT_EMAIL’   , ‘noreply@comptonpeslonline.com’                                       );
define  (‘PORT25TEST’     , ‘check-auth-edwardsmarkf=gmail.com@verifier.port25.com’       );

define  (‘DEFAULT_SMTP_HOST’    , ‘smtp.gmail.com’   );      // 2016-12-05
define  (‘DEFAULT_SMTP_LOGIN’   , ‘noreply@comptonpeslonline.com’  );      // 2016-12-05
define  (‘DEFAULT_SMTP_PASSWD’  , ‘gXXXXXXXv’   );

nodeMailer Insecure

const nodemailer        = require('nodemailer')         ;
const   authEmailAddy   =       'info@comptonpeslonline.com'    ;
const   authPassword    =       'zmcafzfppvquyqjj'              ;
const transporter = nodemailer.createTransport(
        {       service : 'gmail'
        ,       auth    :
                {       user    : authEmailAddy
                ,       pass    : authPassword
                }
        }
);
const mailOptions =
        {       from    :       authEmailAddy
        ,       to      :       'mark@edwardsmark.com'
        //,     cc      :       teacherNameAndEmail
        ,       bcc     :       'mark@edwardsmark.com'
        ,       subject :       'test subject from testSecureMailer.js'
        ,       text    :       'test text body from testSecureMailer.js'
        ,       html    :       '<h3>test html body from testSecureMailer.js</h3>'
        };
transporter.sendMail(mailOptions, (err, res) => {
        if (err) {
                console.log('Failed mailing to ' + ': ' + JSON.stringify(res));
                return console.log(err);
        } else {
                console.log('Successful mailing to ' + userObject.userEmail + ': ' + JSON.stringify(res));
        }
});

nodeMailer with Oauth

node uses an “auth0” approach:

step one:
log out of all accounts (or do all this in firefox)
step two:
https://console.cloud.google.com/apis/credentials/oauthclient/
step three:
enter https://developers.google.com/oauthplayground/
step four:
approve
step five:
create and copy the Refresh token: https://nodemailer.com/smtp/oauth2/
const nodemailer        = require(‘nodemailer’)         ;

const   authEmailAddy   =       ‘noreply@comptonpeslonline.com’                                                 ;
const   clientId        =       ‘6884XXXXXXh6n.apps.googleusercontent.com’      ;
const   clientSecret    =       ‘SXXXXXXS’                                                      ;
const   refreshToken    =       ’1//0XXXXCq4’               ;
const auth =
        {       type            : ‘oauth2’
        ,       user            : authEmailAddy
        ,       clientId
        ,       clientSecret
        ,       refreshToken
        };
const transporter = nodemailer.createTransport(
        {       service : ‘gmail’
        ,       auth
        }
);

node example: /home/comptonpeslonline.com/public_html/comptonPractice/homeworkAssignment/ticklerMailer/ticklerMailer.js

written from:
https://tanaikech.github.io/2018/01/08/send-mails-from-gmail-using-nodemailer/
https://medium.com/@nickroach_50526/sending-emails-with-node-js-using-smtp-gmail-and-oauth2-316fe9c790a1
https://dev.to/documatic/send-email-in-nodejs-with-nodemailer-using-gmail-account-2gd1
https://stackoverflow.com/questions/24098461/nodemailer-gmail-what-exactly-is-a-refresh-token-and-how-do-i-get-one
https://stackoverflow.com/questions/72128433/authenticating-google-gmail-api-using-access-and-refresh-token

2023-09-14 ================================================
to bypass creating an account in /etc/mail.rc :
1) add new password in /etc/postfix/sasl/sasl_passwd
2) postmap -v /etc/postfix/sasl/sasl_passwd ;
3) systemctl reload postfix ; systemctl restart postfix ; systemctl status postfix ;

Mark Edwards

,

---

javascript anonymous functions

Jun 8, 11:54 AM

https://www.javascripttutorial.net/javascript-anonymous-functions/

( () => { console.log(‘Immediately invoked function execution’);
}) ();

Mark Edwards

,

---

php Auth0 examples

May 12, 07:29 AM

  1. cat passParamters.php — pass parameters to Auth0 and have them returned to you.

<?php

$parmArray = [ ‘Parm1’ => ‘One’ , ‘Parm2’ => ‘Two’ , ‘ServerTime’ => date(‘Y-m-d H:i:s’) ];

$state = !empty($_GET[“state”]) ? $_GET[“state”] : null; // ?? $code = !empty($_GET[“code”]) ? $_GET[“code”] : null;
require ‘vendor/autoload.php’;
use Auth0SDKAuth0;

define(‘redirectUrl’ , ( $_SERVER[‘HTTPS’] ? ‘https’ : ‘http’ ) . ‘://’ . $_SERVER[‘HTTP_HOST’] . $_SERVER[‘SCRIPT_NAME’] );

$auth0 = new Auth0([ ‘domain’ => ‘dev-2XXX8.auth0.com’, ‘client_id’ => ‘kZvXXXX6TC’, ‘client_secret’ => ‘4pXXXW0’, ‘redirect_uri’ => constant(‘redirectUrl’), ‘scope’ => ‘openid profile email’,
]);

$userInfo = null;
try { $userInfo = $auth0->getUser();
} catch (Exception $e) { $auth0->logout(); error_log( ‘Line: ‘ . LINE . ‘ — Caught Auth0 exception: ‘ . $e->getMessage() . ‘ — exiting program.’ . “n” ); header(‘Location: ?logout=1’ ) ; exit;
}

if (!$userInfo) { // We have no user info // pass the param in $state variable

$state = http_build_query($parmArray); $auth0->login($state, null, []); // normally the first parm is ‘null’ unless you want auth0 to return passed values! exit; } else { // User is authenticated $userInfo = $auth0->getUser(); printf( ‘Hello %s!’, htmlspecialchars( $userInfo[‘name’] ) ); echo ‘
Logout‘; $get_string = $state; // $state is passed back from Auth0! echo ‘
Result:
‘; parse_str($get_string, $get_array); echo $get_string; echo ‘
‘; print_r($get_array); echo ‘
‘; phpinfo(); // See below for how to display user information }
  1. cat prefillEmailAddressMark.php

require ‘vendor/autoload.php’;
use Auth0SDKAuth0;

define(‘defaultEmail’ , ‘mark@edwardsmark.com’ );

define(‘redirectUrl’ , ( $_SERVER[‘HTTPS’] ? ‘https’ : ‘http’ ) . ‘://’ . $_SERVER[‘HTTP_HOST’] . $_SERVER[‘SCRIPT_NAME’] );

$auth0 = new Auth0([ ‘domain’ => ‘dev-2aXXXX8.auth0.com’, ‘client_id’ => ‘kZXXXXXTC’, ‘client_secret’ => ‘4XXXXXXXXW0’, ‘redirect_uri’ => constant(‘redirectUrl’), ‘scope’ => ‘openid profile email’,
]);

$userInfo = null;
try { $userInfo = $auth0->getUser();
} catch (Exception $e) { $auth0->logout(); error_log( ‘Line: ‘ . LINE . ‘ — Caught Auth0 exception: ‘ . $e->getMessage() . ‘ — exiting program.’ . “n” ); header(‘Location: ?logout=1’ ) ; exit;
}

if (!$userInfo) { // We have no user info // pass login_hint in additonalParams array

$additionalParams= array(‘login_hint’ => constant(‘defaultEmail’) ); $auth0->login(null, null, $additionalParams); exit; } else { $userInfo = $auth0->getUser(); printf( ‘Hello %s!’, htmlspecialchars( $userInfo[‘name’] ));; phpinfo(); // User is authenticated // See below for how to display user information }
Mark Edwards

,

---

Feathers and Auth0 over Proxy

Apr 2, 06:45 AM

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!! https://github.com/simov/grant-profile/issues/15
!!! “custom_params”: {“connection”: “google-oauth2”}, /* this is ONLY required if you want to use just ‘google’ !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

“auth0.online” is the domain name and ‘proxyPort2004’ is the proxy name

IN /etc/httpd/conf/httpd.conf:

. . ProxyPass http://localhost:20004/ ProxyPassReverse http://localhost:20004/
. .

apachectl configtest ## apache lint test validate veryify apache !

###### NOTICE “redirect” ! ! ! ! 2020-08-08
####### “redirect” the only way to get this working in proxy ports.

IN ./config/default.json: “redirect”: “/proxyPort20004/”, “auth0”: { “key”: “kZXXXXXXXXTC”, “secret”: “4pXXXXXXXXXXXXXXXXXXXtKxYSW0”, “scope”: [“openid”, “profile”, “email”], “subdomain”: “dev-2aXXXXw8”, “redirect_uri” : “https://auth0.online/proxyPort20004/oauth/connect/auth0/callback”, “callback” : “https://auth0.online/proxyPort20004/oauth/auth0/authenticate” }

IN https://manage.auth0.com/dashboard/us/dev-2a5aXX8/applications/:

. Application URIs:
. . . Application Login URI: https://auth0.online/proxyPort20004/
. . . Allowed Callback URLs: https://auth0.online/proxyPort20004/oauth/connect/auth0/callback
. . . Allowed Logout URLs: https://www.auth0.online/proxyPort20004/oauth/auth0/authenticate

Notice “redirect_uri” and Callback” URLs: match
also “callback” and “Allowed Logout URLs”

Mark Edwards

,

---

WordPress and Auth0

Mar 11, 10:44 AM

1) install Auth0 for Wordpress and activate

2) Set WordPress settings accordingly from the WordPress control panel:

3) Set Auth0 control panel (on the Auth0.com website) Applications Settings accordingly:

Mark Edwards

,

---

« Older Newer »

Manage