Ensure OpenSMTPD symlink setup at runtime
This commit is contained in:
@@ -168,11 +168,47 @@ fi
|
||||
|
||||
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_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)
|
||||
OPENSMTPD_BINARY=""
|
||||
@@ -193,12 +229,6 @@ fi
|
||||
if [ -n "$OPENSMTPD_BINARY" ] && [ -f "$OPENSMTPD_CONFIG" ]; then
|
||||
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
|
||||
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"))"
|
||||
|
||||
@@ -174,7 +174,12 @@ main() {
|
||||
|
||||
# Check OpenSMTPD service (ports 25, 587, 465)
|
||||
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"
|
||||
|
||||
# Determine which binary to use (prefer custom, fallback to system)
|
||||
|
||||
Reference in New Issue
Block a user