# Contact Form — PHP endpoint

Este endpoint vive en `server1` y procesa los envíos del formulario de `/contacto`.

## ⚠️ NO se deploya con Astro. Es solo template.

## Setup en server1 (Netcup, cPanel)

### 1. Crear cuenta de correo dedicada

En cPanel → Email Accounts, crear:

- **Email**: `no-reply@hostingdelsur.net` (Mauri confirma que ya existe)
- **Password**: contraseña fuerte (mínimo 16 caracteres, símbolos, números)
- **Quota**: 1 GB (solo se usa para SMTP, no recibe correo)

### 2. Crear archivo de credenciales

El archivo se crea en `/home/hostingdelsur/.smtp-credentials.json` (NO en `public_html/`, por seguridad).

Contenido (reemplazar PEGAR_AQUI con la password real):

```json
{
  "host": "localhost",
  "port": 465,
  "username": "no-reply@hostingdelsur.net",
  "password": "PEGAR_AQUI",
  "encryption": "ssl",
  "from": "no-reply@hostingdelsur.net",
  "fromName": "Hosting del Sur - Web",
  "to": "contacto@hostingdelsur.net"
}
```

Por SSH:

```bash
chmod 600 /home/hostingdelsur/.smtp-credentials.json
chown hostingdelsur:hostingdelsur /home/hostingdelsur/.smtp-credentials.json
```

### 3. Subir PHPMailer (ya subido en este deploy)

```bash
# Ya ejecutado durante el deploy:
mkdir -p /home/hostingd/private/PHPMailer
# 3 archivos copiados: Exception.php, PHPMailer.php, SMTP.php
chmod 640 /home/hostingd/private/PHPMailer/*.php
chown -R hostingdelsur:hostingdelsur /home/hostingd/private
```

### 4. Subir el endpoint (ya subido)

```
/home/hostingd/public_html/api/contact.php
/home/hostingd/public_html/api/.htaccess
```

El `.htaccess` deniega todo excepto POST al endpoint. Ya configurado.

### 5. Variables de entorno opcionales (reCAPTCHA secret)

Para activar validación reCAPTCHA v3 server-side, agregar en el `.htaccess` o php.ini del server:

```bash
# SetEnv RECAPTCHA_SECRET "6LeOxaEaAAAAAM5OODBE2p9bknosuxpW7Gg17fKG"
```

O en cPanel → MultiPHP INI Editor:

```ini
env[RECAPTCHA_SECRET] = "6LeOxaEaAAAAAM5OODBE2p9bknosuxpW7Gg17fKG"
```

### 6. Test

```bash
curl -X POST https://hostingdelsur.net/api/contact.php \
  -d "name=Test&[email protected]&message=Hola&lang=es"
```

Debe devolver `{"ok":true}`. Sin reCAPTCHA token primero, con token después.

## Seguridad implementada

- ✅ Credenciales fuera de `public_html/` (en `~/`)
- ✅ Permisos `chmod 600` (solo el usuario puede leer)
- ✅ Honeypot (`website` field) anti-bot
- ✅ Validación y sanitización de inputs
- ✅ `Reply-To` con email del visitante para responder
- ✅ `From` con la cuenta dedicada (no spoofing)
- ✅ TLS obligatorio (puerto 465 + `ssl`)
- ✅ Rate limit básico por IP (3 envíos/hora) vía `apcu_fetch/store`
- ✅ Headers anti-cache y anti-sniff
- ✅ Mensaje de error genérico (no expone detalles internos)
- ✅ reCAPTCHA v3 invisible (con score ≥ 0.3) si se configura `RECAPTCHA_SECRET`

## Pendiente

- [ ] Mauri debe re-enviar la password de `no-reply@` (Mauri la puso en chat originalmente; el deploy la borró del servidor)
- [ ] Mauri debe crear el archivo `~/.smtp-credentials.json` con la password real
- [ ] (Opcional) Configurar `RECAPTCHA_SECRET` en el environment del server
