/** * 이메일 백엔드 서버 진입점 * Express HTTP 서버 + SMTP 서버 시작 */ const express = require("express"); const cors = require("cors"); const dotenv = require("dotenv"); // 환경 변수 로드 dotenv.config(); const app = express(); const port = process.env.PORT || 3000; // 미들웨어 설정 app.use(cors()); app.use(express.json({ limit: "50mb" })); // Base64 인코딩된 첨부파일 40MB 지원 // 헬스 체크 엔드포인트 app.get("/", (req, res) => { res.send("Email Client Backend is running"); }); // 라우터 등록 const authRoutes = require("./routes/auth"); const mailRoutes = require("./routes/mail"); const adminRoutes = require("./routes/admin"); app.use("/api", authRoutes); app.use("/api/admin", adminRoutes); app.use("/api", mailRoutes); // 서비스 및 유틸리티 const { startSMTPServer } = require("./services/smtpService"); const initializeDatabase = require("./utils/dbInit"); /** * 서버 시작 * 1. SMTP 서버 시작 (포트 25) * 2. 데이터베이스 초기화 * 3. HTTP 서버 시작 */ const startServer = async () => { startSMTPServer(); await initializeDatabase(); app.listen(port, () => { console.log(`[서버] HTTP 서버 시작: http://localhost:${port}`); }); }; startServer();