Ensure OpenSMTPD symlink setup at runtime
This commit is contained in:
@@ -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=""
|
||||||
@@ -192,13 +228,7 @@ 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"))"
|
||||||
@@ -206,7 +236,7 @@ if [ -n "$OPENSMTPD_BINARY" ] && [ -f "$OPENSMTPD_CONFIG" ]; then
|
|||||||
log "Starting OpenSMTPD..."
|
log "Starting OpenSMTPD..."
|
||||||
"$OPENSMTPD_BINARY" -d -f "$OPENSMTPD_CONFIG" 2>&1 &
|
"$OPENSMTPD_BINARY" -d -f "$OPENSMTPD_CONFIG" 2>&1 &
|
||||||
OPENSMTPD_PID=$!
|
OPENSMTPD_PID=$!
|
||||||
|
|
||||||
# Wait for OpenSMTPD to start
|
# Wait for OpenSMTPD to start
|
||||||
sleep 2
|
sleep 2
|
||||||
if kill -0 "$OPENSMTPD_PID" 2>/dev/null; then
|
if kill -0 "$OPENSMTPD_PID" 2>/dev/null; then
|
||||||
|
|||||||
@@ -174,9 +174,14 @@ 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)
|
||||||
OPENSMTPD_BINARY=""
|
OPENSMTPD_BINARY=""
|
||||||
if [ -x "$OPENSMTPD_CUSTOM_BINARY" ]; then
|
if [ -x "$OPENSMTPD_CUSTOM_BINARY" ]; then
|
||||||
@@ -186,7 +191,7 @@ main() {
|
|||||||
elif command -v smtpd &>/dev/null; then
|
elif command -v smtpd &>/dev/null; then
|
||||||
OPENSMTPD_BINARY="$(command -v smtpd)"
|
OPENSMTPD_BINARY="$(command -v smtpd)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$OPENSMTPD_BINARY" ]; then
|
if [ -n "$OPENSMTPD_BINARY" ]; then
|
||||||
# Check SMTP port 25
|
# Check SMTP port 25
|
||||||
if check_port 25 "SMTP"; then
|
if check_port 25 "SMTP"; then
|
||||||
|
|||||||
Reference in New Issue
Block a user