Add OpenSMTPD support for email server functionality
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -172,6 +172,42 @@ main() {
|
||||
exit_code=1
|
||||
fi
|
||||
|
||||
# Check OpenSMTPD service (ports 25, 587, 465)
|
||||
health_log "INFO" "=== OpenSMTPD Service ==="
|
||||
OPENSMTPD_BINARY="/workspace/src/backend/app/opensmtpd/install/sbin/smtpd"
|
||||
if [ -x "$OPENSMTPD_BINARY" ]; then
|
||||
# Check SMTP port 25
|
||||
if check_port 25 "SMTP"; then
|
||||
health_log "INFO" "✓ SMTP port 25 is listening"
|
||||
else
|
||||
health_log "WARN" "⚠ SMTP port 25 is not listening (may be normal if not using inbound email)"
|
||||
fi
|
||||
|
||||
# Check SMTP submission port 587
|
||||
if check_port 587 "SMTP Submission"; then
|
||||
health_log "INFO" "✓ SMTP submission port 587 is listening"
|
||||
else
|
||||
health_log "WARN" "⚠ SMTP submission port 587 is not listening"
|
||||
fi
|
||||
|
||||
# Check SMTPS port 465
|
||||
if check_port 465 "SMTPS"; then
|
||||
health_log "INFO" "✓ SMTPS port 465 is listening"
|
||||
else
|
||||
health_log "WARN" "⚠ SMTPS port 465 is not listening"
|
||||
fi
|
||||
|
||||
# Check OpenSMTPD process
|
||||
if pgrep -f "smtpd" > /dev/null; then
|
||||
local smtpd_pid=$(pgrep -f "smtpd" | head -1)
|
||||
health_log "INFO" "✓ OpenSMTPD process running (PID: ${smtpd_pid})"
|
||||
else
|
||||
health_log "WARN" "⚠ OpenSMTPD process not found (may be disabled)"
|
||||
fi
|
||||
else
|
||||
health_log "INFO" "OpenSMTPD not installed at expected location, skipping SMTP checks"
|
||||
fi
|
||||
|
||||
# ttyd service has been removed, no longer checking port 4501
|
||||
|
||||
health_log "INFO" "========== HEALTH CHECK END ==========="
|
||||
|
||||
Reference in New Issue
Block a user