From 5e669c25a5e2f930e3c8a8f8a3923b5925b9267e Mon Sep 17 00:00:00 2001 From: Giovanni Date: Tue, 20 May 2025 15:32:22 +0200 Subject: [PATCH 1/6] add STARTTLS support --- ghettoVCB.conf | 1 + ghettoVCB.sh | 13 ++++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ghettoVCB.conf b/ghettoVCB.conf index 66f7aa8..72a0739 100644 --- a/ghettoVCB.conf +++ b/ghettoVCB.conf @@ -27,6 +27,7 @@ EMAIL_USER_PASSWORD= EMAIL_TO=auroa@primp-industries.com EMAIL_ERRORS_TO= EMAIL_FROM=root@ghettoVCB +EMAIL_TLS=0 WORKDIR_DEBUG=0 VM_SHUTDOWN_ORDER= VM_STARTUP_ORDER= diff --git a/ghettoVCB.sh b/ghettoVCB.sh index 5ccf965..e235cb1 100755 --- a/ghettoVCB.sh +++ b/ghettoVCB.sh @@ -100,6 +100,9 @@ EMAIL_SERVER=auroa.primp-industries.com # Email SMTP server port EMAIL_SERVER_PORT=25 +# Use STARTTLS +EMAIL_TLS= + # Email SMTP username EMAIL_USER_NAME= @@ -1492,7 +1495,7 @@ buildHeaders() { echo -ne "$(echo -n "${EMAIL_USER_PASSWORD}" |openssl enc -A -base64 2>&1 |tail -1)\r\n" >> "${EMAIL_LOG_HEADER}" fi echo -ne "MAIL FROM: <${EMAIL_FROM}>\r\n" >> "${EMAIL_LOG_HEADER}" - echo -ne "RCPT TO: <${EMAIL_ADDRESS}>\r\n" >> "${EMAIL_LOG_HEADER}" + echo -ne "rcpt to: <${EMAIL_ADDRESS}>\r\n" >> "${EMAIL_LOG_HEADER}" echo -ne "DATA\r\n" >> "${EMAIL_LOG_HEADER}" echo -ne "From: ${EMAIL_FROM}\r\n" >> "${EMAIL_LOG_HEADER}" echo -ne "To: ${EMAIL_ADDRESS}\r\n" >> "${EMAIL_LOG_HEADER}" @@ -1512,7 +1515,7 @@ buildHeaders() { sendDelay() { c=0 while read L; do - [ $c -lt 4 ] && sleep ${EMAIL_DELAY_INTERVAL} + [ $c -lt 15 ] && sleep ${EMAIL_DELAY_INTERVAL} c=$((c+1)) echo $L done @@ -1562,7 +1565,11 @@ sendMail() { IFS=',' for i in ${EMAIL_TO}; do buildHeaders ${i} - cat "${EMAIL_LOG_CONTENT}" | sendDelay| "${NC_BIN}" "${EMAIL_SERVER}" "${EMAIL_SERVER_PORT}" > /dev/null 2>&1 + if [ ${EMAIL_TLS} -eq 1 ]; then + cat "${EMAIL_LOG_CONTENT}" | sendDelay| openssl s_client -starttls smtp -crlf -pause -connect "${EMAIL_SERVER}":"${EMAIL_SERVER_PORT}" > /dev/null 2>&1 + else + cat "${EMAIL_LOG_CONTENT}" | sendDelay| "${NC_BIN}" "${EMAIL_SERVER}" "${EMAIL_SERVER_PORT}" > /dev/null 2>&1 + fi #"${NC_BIN}" -i "${EMAIL_DELAY_INTERVAL}" "${EMAIL_SERVER}" "${EMAIL_SERVER_PORT}" < "${EMAIL_LOG_CONTENT}" > /dev/null 2>&1 if [[ $? -eq 1 ]] ; then logger "info" "ERROR: Failed to email log output to ${EMAIL_SERVER}:${EMAIL_SERVER_PORT} to ${EMAIL_TO}\n" From 55e880d4c423101e8304f14d3dff22e35f584741 Mon Sep 17 00:00:00 2001 From: Giovanni Date: Tue, 20 May 2025 15:35:43 +0200 Subject: [PATCH 2/6] fix condition --- ghettoVCB.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ghettoVCB.sh b/ghettoVCB.sh index e235cb1..bed11da 100755 --- a/ghettoVCB.sh +++ b/ghettoVCB.sh @@ -1565,7 +1565,7 @@ sendMail() { IFS=',' for i in ${EMAIL_TO}; do buildHeaders ${i} - if [ ${EMAIL_TLS} -eq 1 ]; then + if [[ "${EMAIL_TLS}" -eq 1 ]]; then cat "${EMAIL_LOG_CONTENT}" | sendDelay| openssl s_client -starttls smtp -crlf -pause -connect "${EMAIL_SERVER}":"${EMAIL_SERVER_PORT}" > /dev/null 2>&1 else cat "${EMAIL_LOG_CONTENT}" | sendDelay| "${NC_BIN}" "${EMAIL_SERVER}" "${EMAIL_SERVER_PORT}" > /dev/null 2>&1 From de1e4963db811cea5f8bf7194fa4d7a7cdfe87b4 Mon Sep 17 00:00:00 2001 From: Giovanni Date: Wed, 21 May 2025 14:42:52 +0200 Subject: [PATCH 3/6] handle default configuration variables --- ghettoVCB.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ghettoVCB.sh b/ghettoVCB.sh index bed11da..68e8adb 100755 --- a/ghettoVCB.sh +++ b/ghettoVCB.sh @@ -100,8 +100,8 @@ EMAIL_SERVER=auroa.primp-industries.com # Email SMTP server port EMAIL_SERVER_PORT=25 -# Use STARTTLS -EMAIL_TLS= +# Use STARTTLS 1=yes, 0=no +EMAIL_TLS=0 # Email SMTP username EMAIL_USER_NAME= @@ -381,6 +381,7 @@ captureDefaultConfigurations() { DEFAULT_ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP="${ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP}" DEFAULT_VMDK_FILES_TO_BACKUP="${VMDK_FILES_TO_BACKUP}" DEFAULT_EMAIL_LOG="${EMAIL_LOG}" + DEFAULT_EMAIL_TLS="${EMAIL_TLS}" DEFAULT_WORKDIR_DEBUG="${WORKDIR_DEBUG}" DEFAULT_VM_SHUTDOWN_ORDER="${VM_SHUTDOWN_ORDER}" DEFAULT_VM_STARTUP_ORDER="${VM_STARTUP_ORDER}" @@ -408,6 +409,7 @@ useDefaultConfigurations() { ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP="${DEFAULT_ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP}" VMDK_FILES_TO_BACKUP="${DEFAULT_VMDK_FILES_TO_BACKUP}" EMAIL_LOG="${DEFAULT_EMAIL_LOG}" + EMAIL_TLS="${DEFAULT_EMAIL_TLS}" WORKDIR_DEBUG="${DEFAULT_WORKDIR_DEBUG}" VM_SHUTDOWN_ORDER="${DEFAULT_VM_SHUTDOWN_ORDER}" VM_STARTUP_ORDER="${DEFAULT_VM_STARTUP_ORDER}" @@ -573,6 +575,7 @@ dumpVMConfigurations() { logger "info" "CONFIG - RSYNC_LINK = ${RSYNC_LINK}" logger "info" "CONFIG - BACKUP_FILES_CHMOD = ${BACKUP_FILES_CHMOD}" logger "info" "CONFIG - EMAIL_LOG = ${EMAIL_LOG}" + logger "info" "CONFIG - EMAIL_TLS = ${EMAIL_TLS}" if [[ "${EMAIL_LOG}" -eq 1 ]]; then logger "info" "CONFIG - EMAIL_SERVER = ${EMAIL_SERVER}" logger "info" "CONFIG - EMAIL_SERVER_PORT = ${EMAIL_SERVER_PORT}" From 8ea97ff80042f0892ce7510e995c38f8f9432985 Mon Sep 17 00:00:00 2001 From: Giovanni Date: Wed, 21 May 2025 15:00:46 +0200 Subject: [PATCH 4/6] handle single recipient --- ghettoVCB.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ghettoVCB.sh b/ghettoVCB.sh index 68e8adb..2a088fc 100755 --- a/ghettoVCB.sh +++ b/ghettoVCB.sh @@ -1581,7 +1581,11 @@ sendMail() { unset IFS else buildHeaders ${EMAIL_TO} - cat "${EMAIL_LOG_CONTENT}" | sendDelay| "${NC_BIN}" "${EMAIL_SERVER}" "${EMAIL_SERVER_PORT}" > /dev/null 2>&1 + if [[ "${EMAIL_TLS}" -eq 1 ]]; then + cat "${EMAIL_LOG_CONTENT}" | sendDelay| openssl s_client -starttls smtp -crlf -pause -connect "${EMAIL_SERVER}":"${EMAIL_SERVER_PORT}" > /dev/null 2>&1 + else + cat "${EMAIL_LOG_CONTENT}" | sendDelay| "${NC_BIN}" "${EMAIL_SERVER}" "${EMAIL_SERVER_PORT}" > /dev/null 2>&1 + fi #"${NC_BIN}" -i "${EMAIL_DELAY_INTERVAL}" "${EMAIL_SERVER}" "${EMAIL_SERVER_PORT}" < "${EMAIL_LOG_CONTENT}" > /dev/null 2>&1 if [[ $? -eq 1 ]] ; then logger "info" "ERROR: Failed to email log output to ${EMAIL_SERVER}:${EMAIL_SERVER_PORT} to ${EMAIL_TO}\n" From 228d8829f36db8ec1886bd4c0a70987168226e2b Mon Sep 17 00:00:00 2001 From: Giovanni Date: Wed, 21 May 2025 18:12:50 +0200 Subject: [PATCH 5/6] fix EOL and use a more standard openssl(1) command --- ghettoVCB.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ghettoVCB.sh b/ghettoVCB.sh index 2a088fc..7596acb 100755 --- a/ghettoVCB.sh +++ b/ghettoVCB.sh @@ -1561,7 +1561,7 @@ sendMail() { EMAIL_TO="${EMAIL_TO},${EMAIL_ERRORS_TO}" fi fi - + sed -ie "s/\r//g" "${EMAIL_LOG_CONTENT}" echo "${EMAIL_TO}" | grep "," > /dev/null 2>&1 if [[ $? -eq 0 ]] ; then ORIG_IFS=${IFS} @@ -1569,7 +1569,7 @@ sendMail() { for i in ${EMAIL_TO}; do buildHeaders ${i} if [[ "${EMAIL_TLS}" -eq 1 ]]; then - cat "${EMAIL_LOG_CONTENT}" | sendDelay| openssl s_client -starttls smtp -crlf -pause -connect "${EMAIL_SERVER}":"${EMAIL_SERVER_PORT}" > /dev/null 2>&1 + cat "${EMAIL_LOG_CONTENT}" | sendDelay| openssl s_client -starttls smtp -crlf -quiet -connect "${EMAIL_SERVER}":"${EMAIL_SERVER_PORT}" > /dev/null 2>&1 else cat "${EMAIL_LOG_CONTENT}" | sendDelay| "${NC_BIN}" "${EMAIL_SERVER}" "${EMAIL_SERVER_PORT}" > /dev/null 2>&1 fi @@ -1582,7 +1582,7 @@ sendMail() { else buildHeaders ${EMAIL_TO} if [[ "${EMAIL_TLS}" -eq 1 ]]; then - cat "${EMAIL_LOG_CONTENT}" | sendDelay| openssl s_client -starttls smtp -crlf -pause -connect "${EMAIL_SERVER}":"${EMAIL_SERVER_PORT}" > /dev/null 2>&1 + cat "${EMAIL_LOG_CONTENT}" | sendDelay| openssl s_client -starttls smtp -crlf -quiet -connect "${EMAIL_SERVER}":"${EMAIL_SERVER_PORT}" > /dev/null 2>&1 else cat "${EMAIL_LOG_CONTENT}" | sendDelay| "${NC_BIN}" "${EMAIL_SERVER}" "${EMAIL_SERVER_PORT}" > /dev/null 2>&1 fi From 400286f63af2298c81f76677447423fef1c8b732 Mon Sep 17 00:00:00 2001 From: Giovanni Date: Thu, 22 May 2025 15:19:28 +0200 Subject: [PATCH 6/6] change EOL only when needed --- ghettoVCB.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ghettoVCB.sh b/ghettoVCB.sh index 7596acb..fcdb698 100755 --- a/ghettoVCB.sh +++ b/ghettoVCB.sh @@ -1561,7 +1561,7 @@ sendMail() { EMAIL_TO="${EMAIL_TO},${EMAIL_ERRORS_TO}" fi fi - sed -ie "s/\r//g" "${EMAIL_LOG_CONTENT}" + echo "${EMAIL_TO}" | grep "," > /dev/null 2>&1 if [[ $? -eq 0 ]] ; then ORIG_IFS=${IFS} @@ -1569,7 +1569,7 @@ sendMail() { for i in ${EMAIL_TO}; do buildHeaders ${i} if [[ "${EMAIL_TLS}" -eq 1 ]]; then - cat "${EMAIL_LOG_CONTENT}" | sendDelay| openssl s_client -starttls smtp -crlf -quiet -connect "${EMAIL_SERVER}":"${EMAIL_SERVER_PORT}" > /dev/null 2>&1 + cat "${EMAIL_LOG_CONTENT}" | sed -e "s/\r//g" | sendDelay| openssl s_client -starttls smtp -crlf -quiet -connect "${EMAIL_SERVER}":"${EMAIL_SERVER_PORT}" > /dev/null 2>&1 else cat "${EMAIL_LOG_CONTENT}" | sendDelay| "${NC_BIN}" "${EMAIL_SERVER}" "${EMAIL_SERVER_PORT}" > /dev/null 2>&1 fi @@ -1582,7 +1582,7 @@ sendMail() { else buildHeaders ${EMAIL_TO} if [[ "${EMAIL_TLS}" -eq 1 ]]; then - cat "${EMAIL_LOG_CONTENT}" | sendDelay| openssl s_client -starttls smtp -crlf -quiet -connect "${EMAIL_SERVER}":"${EMAIL_SERVER_PORT}" > /dev/null 2>&1 + cat "${EMAIL_LOG_CONTENT}" | sed -e "s/\r//g" | sendDelay| openssl s_client -starttls smtp -crlf -quiet -connect "${EMAIL_SERVER}":"${EMAIL_SERVER_PORT}" > /dev/null 2>&1 else cat "${EMAIL_LOG_CONTENT}" | sendDelay| "${NC_BIN}" "${EMAIL_SERVER}" "${EMAIL_SERVER_PORT}" > /dev/null 2>&1 fi