Merge pull request #12 from southseact-3d/cto-task-ok-so-for-the-opensmtpd-i-get-this-error-please-fix-and-star-e02

Ensure OpenSMTPD symlink setup at runtime
This commit is contained in:
Liam Hetherington
2026-02-09 14:07:43 +00:00
committed by GitHub
2 changed files with 50 additions and 15 deletions

View File

@@ -168,11 +168,47 @@ fi
log "Setting up OpenSMTPD service..." log "Setting up OpenSMTPD service..."
# Start OpenSMTPD if configuration exists
OPENSMTPD_CONFIG="/workspace/src/backend/app/opensmtpd/install/etc/smtpd.conf"
OPENSMTPD_PID_FILE="/workspace/src/backend/app/opensmtpd/install/var/run/smtpd.pid"
OPENSMTPD_CUSTOM_BINARY="/workspace/src/backend/app/opensmtpd/install/sbin/smtpd"
OPENSMTPD_SYSTEM_BINARY="/usr/sbin/smtpd" OPENSMTPD_SYSTEM_BINARY="/usr/sbin/smtpd"
OPENSMTPD_INSTALL_ROOT="/workspace/src/backend/app/opensmtpd/install"
if [ -d "${REPO_DIR}/backend/app/opensmtpd" ]; then
OPENSMTPD_INSTALL_ROOT="${REPO_DIR}/backend/app/opensmtpd/install"
fi
OPENSMTPD_CONFIG="${OPENSMTPD_INSTALL_ROOT}/etc/smtpd.conf"
OPENSMTPD_PID_FILE="${OPENSMTPD_INSTALL_ROOT}/var/run/smtpd.pid"
OPENSMTPD_CUSTOM_BINARY="${OPENSMTPD_INSTALL_ROOT}/sbin/smtpd"
ensure_opensmtpd_layout() {
if [ ! -x "$OPENSMTPD_SYSTEM_BINARY" ]; then
return
fi
mkdir -p "${OPENSMTPD_INSTALL_ROOT}/sbin"
mkdir -p "${OPENSMTPD_INSTALL_ROOT}/etc"
mkdir -p "${OPENSMTPD_INSTALL_ROOT}/var/spool/smtpd"
mkdir -p "${OPENSMTPD_INSTALL_ROOT}/var/spool/queue"
mkdir -p "${OPENSMTPD_INSTALL_ROOT}/var/run"
if [ ! -e "$OPENSMTPD_CUSTOM_BINARY" ]; then
ln -s "$OPENSMTPD_SYSTEM_BINARY" "$OPENSMTPD_CUSTOM_BINARY"
fi
if [ -x "/usr/sbin/smtpctl" ] && [ ! -e "${OPENSMTPD_INSTALL_ROOT}/sbin/smtpctl" ]; then
ln -s "/usr/sbin/smtpctl" "${OPENSMTPD_INSTALL_ROOT}/sbin/smtpctl"
fi
if [ -x "/usr/bin/sendmail" ] && [ ! -e "${OPENSMTPD_INSTALL_ROOT}/sbin/sendmail" ]; then
ln -s "/usr/bin/sendmail" "${OPENSMTPD_INSTALL_ROOT}/sbin/sendmail"
fi
if [ -d "/etc/ssl/certs" ] && [ ! -e "${OPENSMTPD_INSTALL_ROOT}/etc/certs" ]; then
ln -s "/etc/ssl/certs" "${OPENSMTPD_INSTALL_ROOT}/etc/certs"
fi
chmod -R 755 "${OPENSMTPD_INSTALL_ROOT}/var" 2>/dev/null || true
}
ensure_opensmtpd_layout
# Determine which binary to use (prefer custom, fallback to system) # Determine which binary to use (prefer custom, fallback to system)
OPENSMTPD_BINARY="" OPENSMTPD_BINARY=""
@@ -193,12 +229,6 @@ fi
if [ -n "$OPENSMTPD_BINARY" ] && [ -f "$OPENSMTPD_CONFIG" ]; then if [ -n "$OPENSMTPD_BINARY" ] && [ -f "$OPENSMTPD_CONFIG" ]; then
log "OpenSMTPD configuration found at $OPENSMTPD_CONFIG" log "OpenSMTPD configuration found at $OPENSMTPD_CONFIG"
# Ensure required directories exist with proper permissions
mkdir -p /workspace/src/backend/app/opensmtpd/install/var/spool/smtpd
mkdir -p /workspace/src/backend/app/opensmtpd/install/var/spool/queue
mkdir -p /workspace/src/backend/app/opensmtpd/install/var/run
chmod -R 755 /workspace/src/backend/app/opensmtpd/install/var
# Check if OpenSMTPD is already running # Check if OpenSMTPD is already running
if [ -f "$OPENSMTPD_PID_FILE" ] && kill -0 "$(cat "$OPENSMTPD_PID_FILE")" 2>/dev/null; then if [ -f "$OPENSMTPD_PID_FILE" ] && kill -0 "$(cat "$OPENSMTPD_PID_FILE")" 2>/dev/null; then
log "OpenSMTPD is already running (PID: $(cat "$OPENSMTPD_PID_FILE"))" log "OpenSMTPD is already running (PID: $(cat "$OPENSMTPD_PID_FILE"))"

View File

@@ -174,7 +174,12 @@ main() {
# Check OpenSMTPD service (ports 25, 587, 465) # Check OpenSMTPD service (ports 25, 587, 465)
health_log "INFO" "=== OpenSMTPD Service ===" health_log "INFO" "=== OpenSMTPD Service ==="
OPENSMTPD_CUSTOM_BINARY="/workspace/src/backend/app/opensmtpd/install/sbin/smtpd" REPO_DIR="${REPO_DIR:-/home/web/data}"
OPENSMTPD_INSTALL_ROOT="/workspace/src/backend/app/opensmtpd/install"
if [ -d "${REPO_DIR}/backend/app/opensmtpd" ]; then
OPENSMTPD_INSTALL_ROOT="${REPO_DIR}/backend/app/opensmtpd/install"
fi
OPENSMTPD_CUSTOM_BINARY="${OPENSMTPD_INSTALL_ROOT}/sbin/smtpd"
OPENSMTPD_SYSTEM_BINARY="/usr/sbin/smtpd" OPENSMTPD_SYSTEM_BINARY="/usr/sbin/smtpd"
# Determine which binary to use (prefer custom, fallback to system) # Determine which binary to use (prefer custom, fallback to system)