Add OpenSMTPD support for email server functionality

This commit is contained in:
cto-new[bot]
2026-02-09 12:28:30 +00:00
parent b95efaebea
commit 6bb30a6de2
5 changed files with 139 additions and 1 deletions

View File

@@ -166,6 +166,49 @@ else
mkdir -p "$REPO_DIR"
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_BINARY="/workspace/src/backend/app/opensmtpd/install/sbin/smtpd"
if [ -f "$OPENSMTPD_CONFIG" ] && [ -x "$OPENSMTPD_BINARY" ]; 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"))"
else
log "Starting OpenSMTPD..."
"$OPENSMTPD_BINARY" -d -f "$OPENSMTPD_CONFIG" 2>&1 &
OPENSMTPD_PID=$!
# Wait for OpenSMTPD to start
sleep 2
if kill -0 "$OPENSMTPD_PID" 2>/dev/null; then
log "OpenSMTPD started successfully (PID: $OPENSMTPD_PID)"
echo "$OPENSMTPD_PID" > "$OPENSMTPD_PID_FILE"
else
log "WARNING: OpenSMTPD failed to start"
fi
fi
else
log "OpenSMTPD not configured or binary not found, skipping SMTP setup"
if [ ! -f "$OPENSMTPD_CONFIG" ]; then
log " Config file missing: $OPENSMTPD_CONFIG"
fi
if [ ! -x "$OPENSMTPD_BINARY" ]; then
log " Binary not executable: $OPENSMTPD_BINARY"
fi
fi
log "Starting Shopify AI App Builder service..."
# Use /opt/webchat directly as it contains the actual server.js with node_modules
@@ -283,6 +326,14 @@ cleanup() {
monitor_resources
fi
# Stop OpenSMTPD if running
if [ -n "$OPENSMTPD_PID" ] && kill -0 "$OPENSMTPD_PID" 2>/dev/null; then
log "Terminating OpenSMTPD service (PID: $OPENSMTPD_PID)"
kill "$OPENSMTPD_PID" 2>/dev/null || true
wait "$OPENSMTPD_PID" 2>/dev/null || true
log "OpenSMTPD service terminated"
fi
if [ -n "$MONITOR_PID" ] && kill -0 "$MONITOR_PID" 2>/dev/null; then
log "Terminating monitor process (PID: $MONITOR_PID)"
kill "$MONITOR_PID" 2>/dev/null || true