@@ -220,6 +220,102 @@ if [ -f /home/vmail/passwd ]; then
220220fi
221221
222222postconf -e " myhostname = $mailname "
223+
224+ setup_header_check () {
225+ echo " [Header Check] Starting Postfix header_check configuration..."
226+
227+ local HEADER_CHECK_FILE=" /etc/postfix/header_check"
228+
229+ echo " [Header Check] Using default rule with heredoc method"
230+
231+ # Check and create/update header_check file
232+ if [ -f " $HEADER_CHECK_FILE " ]; then
233+ echo " [Header Check] Found existing file: $HEADER_CHECK_FILE "
234+
235+ # Check if Feedback-ID related rules are already included
236+ if grep -q " Feedback-ID:" " $HEADER_CHECK_FILE " ; then
237+ echo " [Header Check] File already contains Feedback-ID rules"
238+
239+ # Check if it contains the correct rule with $1
240+ if grep -q " PREPEND X-Log-Feedback-ID: \$ 1" " $HEADER_CHECK_FILE " ; then
241+ echo " [Header Check] ✓ Target rule already exists, no modification needed"
242+ return 0
243+ else
244+ echo " [Header Check] Found different rule, appending new rule..."
245+ echo " " >> " $HEADER_CHECK_FILE " # Add blank line
246+ echo " # Added by Header Check setup - $( date) " >> " $HEADER_CHECK_FILE "
247+ # Use heredoc to ensure $1 is written correctly
248+ cat >> " $HEADER_CHECK_FILE " << 'EOF '
249+ /^Feedback-ID:\s*(\d+):/ PREPEND X-Log-Feedback-ID: $1
250+ EOF
251+ echo " [Header Check] ✓ New rule appended"
252+ fi
253+ else
254+ echo " [Header Check] No Feedback-ID rule found, appending..."
255+ echo " " >> " $HEADER_CHECK_FILE " # Add blank line
256+ echo " # Added by Header Check setup - $( date) " >> " $HEADER_CHECK_FILE "
257+ # Use heredoc to ensure $1 is written correctly
258+ cat >> " $HEADER_CHECK_FILE " << 'EOF '
259+ /^Feedback-ID:\s*(\d+):/ PREPEND X-Log-Feedback-ID: $1
260+ EOF
261+ echo " [Header Check] ✓ Rule appended to existing file"
262+ fi
263+ else
264+ echo " [Header Check] Creating new header_check file..."
265+ # Use heredoc to ensure $1 is written correctly
266+ cat > " $HEADER_CHECK_FILE " << 'EOF '
267+ # Header Check Rules - Created by init.sh $(date)
268+ /^Feedback-ID:\s*(\d+):/ PREPEND X-Log-Feedback-ID: $1
269+ EOF
270+ echo " [Header Check] ✓ New file created and rule added"
271+ fi
272+
273+ # Set file permissions
274+ chmod 644 " $HEADER_CHECK_FILE "
275+ chown root:root " $HEADER_CHECK_FILE "
276+
277+ # Display file content
278+ echo " [Header Check] === File Content ==="
279+ cat " $HEADER_CHECK_FILE " | while read line; do
280+ echo " [Header Check] $line "
281+ done
282+ echo " [Header Check] ====================="
283+
284+ # Update Postfix configuration
285+ echo " [Header Check] Updating Postfix configuration..."
286+ postconf -e ' header_checks = pcre:/etc/postfix/header_check'
287+
288+ # Verify configuration
289+ if postconf header_checks | grep -q " pcre:/etc/postfix/header_check" ; then
290+ echo " [Header Check] ✓ Postfix configuration updated"
291+ else
292+ echo " [Header Check] ✗ Warning: Postfix configuration update failed"
293+ return 1
294+ fi
295+
296+ echo " [Header Check] ✓ Header Check configuration completed"
297+ return 0
298+ }
299+
300+ # Check if Header Check feature is enabled - Default enabled, supports multiple formats
301+ # Default behavior: If ENABLE_HEADER_CHECK is not set, default to enabled
302+ ENABLE_HEADER_CHECK_VALUE=" ${ENABLE_HEADER_CHECK:- true} "
303+
304+ if [ " $ENABLE_HEADER_CHECK_VALUE " = " true" ] || [ " $ENABLE_HEADER_CHECK_VALUE " = " True" ] || [ " $ENABLE_HEADER_CHECK_VALUE " = " TRUE" ] || \
305+ [ " $ENABLE_HEADER_CHECK_VALUE " = " 1" ] || [ " $ENABLE_HEADER_CHECK_VALUE " = " yes" ] || [ " $ENABLE_HEADER_CHECK_VALUE " = " YES" ] || \
306+ [ " $ENABLE_HEADER_CHECK_VALUE " = " on" ] || [ " $ENABLE_HEADER_CHECK_VALUE " = " ON" ]; then
307+ echo " [Init] Header Check feature is enabled (ENABLE_HEADER_CHECK=$ENABLE_HEADER_CHECK_VALUE )"
308+ setup_header_check
309+ if [ $? -eq 0 ]; then
310+ echo " [Init] Header Check feature configured successfully"
311+ else
312+ echo " [Init] Warning: Header Check configuration failed"
313+ fi
314+ else
315+ echo " [Init] Header Check feature is disabled (ENABLE_HEADER_CHECK=$ENABLE_HEADER_CHECK_VALUE )"
316+ echo " [Init] To enable Header Check, set ENABLE_HEADER_CHECK=true (or 1, yes, on)"
317+ fi
318+
223319subj=" /C=US/ST=Denial/L=Springfield/O=Dis/CN=$mailname "
224320
225321if [[ ! -a ' /etc/ssl/certs/dovecot.pem' ]]
0 commit comments